example of python operator overloadind
2010-03-15 18:35
453 查看
And last here is the overload operators example:
# map() takes two (or more) arguments, a function and a list to apply the function to # lambda can be put anywhere a function is expected # map() calls lambada for every element in the self list # since Vector has overloaded __getitem__ and __len__ definitions # the Vector object can be considered a list # the lambda function adds each other item to each item in the list # note this only adds objects that can typicaly be added by python # print statements added to show what is getting called class Vector: def __init__(self, data): print "__init__" self.data = data def __call__(self, varA, varB): print "__call__" print "do something with ", varA, " and ", varB # overload print # repr returns a string containing a printable representation of an object # otherwise printing a Vector object would look like: #<__main__.Vector instance at 0x0000000017A9DF48> def __repr__(self): print "__repr__" return repr(self.data) # overload + def __add__(self, other): print "__add__" return Vector(map(lambda x, y: x+y, self, other)) # overload - def __sub__(self, other): print "__sub__" return Vector(map(lambda x, y: x-y, self, other)) # overload / def __div__(self, other): print "__div__" return Vector(map(lambda x, y: x/y, self, other)) # overload * def __mul__(self, other): print "__mul__" return Vector(map(lambda x, y: x*y, self, other)) # overload % def __mod__(self, other): print "__mod__" return Vector(map(lambda x, y: x%y, self, other)) # overload [] def __getitem__(self, index): print "__getitem__" return self.data[index] # overload set [] def __setitem__(self, key, item): print "__setitem__" self.data[key] = item # return size to len() def __len__(self): print "__len__" return len(self.data) # Execute this in the Python script tab vecA = Vector([1, 2, 3]) >>__init__ vecA( 1, 2 ) >>__call__ >>do something with 1 and 2 print vecA >>__repr__ >>[1, 2, 3] vecB = vecA + vecA >>__add__ >>__len__ >>__len__ >>__getitem__ >>__getitem__ >>__getitem__ >>__getitem__ >>__getitem__ >>__getitem__ >>__getitem__ >>__getitem__ >>__init__ vecB = vecA - vecA >>__sub__ >>__len__ >>__len__ >>__getitem__ >>__getitem__ >>__getitem__ >>__getitem__ >>__getitem__ >>__getitem__ >>__getitem__ >>__getitem__ >>__init__ vecB = vecA / vecA >>__div__ >>__len__ >>__len__ >>__getitem__ >>__getitem__ >>__getitem__ >>__getitem__ >>__getitem__ >>__getitem__ >>__getitem__ >>__getitem__ >>__init__ vecB = vecA * vecA >>__mul__ >>__len__ >>__len__ >>__getitem__ >>__getitem__ >>__getitem__ >>__getitem__ >>__getitem__ >>__getitem__ >>__getitem__ >>__getitem__ >>__init__ vecB = vecA % vecA >>__mod__ >>__len__ >>__len__ >>__getitem__ >>__getitem__ >>__getitem__ >>__getitem__ >>__getitem__ >>__getitem__ >>__getitem__ >>__getitem__ >>__init__ print vecB[2] >>__getitem__ >>0 vecB[2] = 10 >>__setitem__ len(vecB) >>__len__ >># Result: 3 #
相关文章推荐
- Python example of SSH in multi-threads
- A Basic Example of Threads Synchronization in Python, python中的线程同步示例
- A example code of multithread communication in Python
- 10 points about instanceof operator in Java with example
- python错误提示“TabError: inconsistent use of tabs and spaces in indentation”
- use python in vim script of ~/.vimrc
- Misleading error message in PowerShell script: "Invalid assignment expression. The left hand side of an assignment operator need
- the usage of dict in python
- A bug in example of JS definitive guide 6th
- Sample of standalone in python
- return value of operator overloading in C++
- Hinton's Dropout in 3 Lines of Python
- Look into "A Neural Network in 11 lines of Python"
- return the index of a 'key' in Python dictionary
- Python:WARNING: The version of Tcl/Tk (8.5.9) in use may be unstable.
- Use the unsinged type as operands of shift operator in C language
- How Synchronization works in Java ? Example of synchronized Block and Method
- How to create own operator with python in mxnet?
- LeetCode434 Number of Segments in a String java and python solution
- Error:Your step-into request resulted in an automatic step-over of a property or operator.