您缺少通常行为的关键例外:当右侧操作数是左侧操作数类的子类的实例时,将首先调用右侧操作数的特殊方法。
请参阅以下文档:
http://docs.python.org/reference/datamodel.html#coercion-
rules
特别是以下两段:
对于
x和y,首先x.__op__(y)尝试。如果未实现或返回NotImplemented,请y.__rop__(x)尝试。如果这也没有实现或返回NotImplemented,则引发TypeError异常。但是请参见以下异常:上一项的例外:如果左操作数是内置类型或新样式类的实例,而右操作数是该类型或类的适当子类的实例,并且覆盖基数的
__rop__()方法,则右操作的__rop__()方法是左操作的尝试过__op__()的方法。



