|
|
|
|
| 关于python中的+操作时自动调__add__的疑问 |
 关于python中的+操作时自动调__add__的疑问 - parnla [ 2006-02-24 11:11 | 918 byte(s)]
 Re: 关于python中的+操作时自动调__add__的疑问 - passworld [ 2006-02-26 13:14 | 171 byte(s)]
 Re: 关于python中的+操作时自动调__add__的疑问 - parnla [ 2006-02-27 13:01 | 362 byte(s)]
 Re: 关于python中的+操作时自动调__add__的疑问 - flingfly [ 2006-02-26 12:05 | 54 byte(s)]
|
|
|
|
[Original]
[Print]
[Top]
|
>>>class firstclass:
def setdata(self, value):
self.data = value
def display(self):
print self.data
>>>class secondclass(firstclass):
def display(self):
print 'curent value = "%s"' % self.data
>>>class thirdclass(secondclass):
def __init__(self, value):
self.data = value
def __add__(self, other):
print " + test"
return thirdclass(self.data + other)
def __mul__(self, other):
print " * test"
self.data = self.data * other
>>>a = thirdclass("abc")
当执行a + "def"时会自动调用thirdclass中的___add___方法,可是那个方法中不是也有个+操作么,为什么不会进入+ --> __add__ --> +循环
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
数据类型不一样,第二个 + 是字符串之间的 + ,会使用字符串类的 + 方法,那个不是 thirdclass 定义的。
self.data + other == 'abc' + 'def'
|
|
|
----
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
也就是说当一个类重载了__add__,且这个类的一个object出现在+操作时才会自动调这个方法。
Such methods are called automatically when Python evaluates operators
For instance, if an object inherits an _ _ add __ method, it is called when the object appears in a + expression
呵呵,这句话没仔细看,理解错了。谢谢
|
|
|
[Original]
[Print]
[Top]
|
|
|