43讲关于python反运算的
小甲鱼的例子是class Nint(int):
def __radd__(self,other):
return int.__sub__(self,other)
a=Nint(4)
1+a得到的结果是3
但是按照我的理解1应该是int类的一个实例对象啊,1+a可以调用1这个对象的add方法的啊 自定义的类方法操作优先级高于系统常量的方法 BngThea 发表于 2018-2-5 16:03
自定义的类方法操作优先级高于系统常量的方法
可是按照python无处不对象的观点,1应该是int类的一个实例对象啊 1 的确是 int 的一个实例对象,按照楼上的说法,自定义的类方法优先级比int的方法要高,所以会先去调用自定义类
中的方法,没有再调用 int 里的方法。 °蓝鲤歌蓝 发表于 2018-2-5 16:26
1 的确是 int 的一个实例对象,按照楼上的说法,自定义的类方法优先级比int的方法要高,所以会先去调用自定 ...
能不能说的稍微详细与规范一点点,有点感觉了谢谢了 开个丸笑 发表于 2018-2-5 16:44
能不能说的稍微详细与规范一点点,有点感觉了谢谢了
你 1 是 int类型的, int是系统内部函数, a 是由你自定义也就是你自己后来写的类实例化的一个对象,所以进行
1 + a 时,由于自定义方法的优先级高,系统会优先去 a 里面找有没有__radd__() 方法,有的话就调用,你这里的 a 是由的,所以
1 + a 这个 + 号调用的是 a 里的那个方法。如果没有,就会调用 1 里面的 __add()__方法了。大概意思就是这样。 开个丸笑 发表于 2018-2-5 16:18
可是按照python无处不对象的观点,1应该是int类的一个实例对象啊
类方法调用顺序上变量的优先级高于常量
页:
[1]