寄安 发表于 2021-8-15 11:47:14

属性相关的魔法方法

c.x()   这个x到底是什么,这个程序里也没有叫x的属性呀
关于这个在运行的时候c.x()为啥会两个都打印,getattr不是访问不存在的属性,getarrribute访问存在的属性,
setattr时,为啥改变的时getattr的值,getattribute不变那

大马强 发表于 2021-8-15 12:05:16

1.这是就是涉及到方法的执行顺序了,可以出当我们访问一个属性时,无论存在与否,都会先调用getattribute方法,如果该属性不存在,接着调用getattr
2.set被重写,调用父类的set将x声明并定义,这时访问x,先该对象的getattribute打印“getattribute”,再调用父类的getattribute,返回x的值

大马强 发表于 2021-8-15 12:08:31

https://static01.imgkr.com/temp/0ba00e496fb244a585d3f54832c899b5.jpg

寄安 发表于 2021-8-15 14:19:41

那么c.x()到底是个什么东西
这个x好像也没在类里面声明

寄安 发表于 2021-8-15 14:23:47

寄安 发表于 2021-8-15 14:19
那么c.x()到底是个什么东西
这个x好像也没在类里面声明

刚刚找到了原因,麻烦了
页: [1]
查看完整版本: 属性相关的魔法方法