class A:
def __init__(self):
self.count=-1
def __setattr__(self,name,value):
super().__setattr__(name,value)
super().__setattr__('count',self.count+1)
a=A()
a.count
0
class B:
count=-1
def __setattr__(self,name,value):
super().__setattr__(name,value)
super().__setattr__('count',self.count+1)
a=A()
a.count
-1
为什么类A中__init__方法给count赋值时会调用setattr()使count的值+1。而类B中直接给属性count赋值的操作没调用到setattr()?
init魔法方法会调用setattr,这是约定,后者你赋值不是在init里
所谓魔法,就是这个意思
要不为什么创建对象就会自动找到__init__而不是 __new__或者 __gouzao__?