目录
1、用super()调用基类的setattr,因为本身在方法中写了setattr就是重写了这个方法,如果调用基类就会显得,比较正常。还有就是里面参数的问题。一个是接收 一个是值
1、用super()调用基类的setattr,因为本身在方法中写了setattr就是重写了这个方法,如果调用基类就会显得,比较正常。还有就是里面参数的问题。一个是接收 一个是值
class Counter:
def __init__(self):
super().__setattr__('counter',0)
def __setattr__(self, name, value):
super().__setattr__('counter',self.counter+1)
super().__setattr__(name,value)
def __delattr__(self,name):
super().__setattr__('counter',self.counter-1)
super().__delattr__(name)
c = Counter()
c.x = 1
print(c.counter)
c.y= 1
print(c.counter)
c.z = 1
del c.x
print(c.counter)
2、我觉得 我可能只能看的懂用字典写的方法
class Counter:
def __init__(self):
self.__dict__['counter']=0
def __setattr__(self, name, value):
self.__dict__[name] = value
self.__dict__['counter'] += 1
def __delattr__(self, name):
self.__dict__[name]
self.__dict__['counter'] -=1
c = Counter()
c.x=1
print(c.counter)
c.y = 1
print(c.counter)
c.z =1
print(c.counter)
del c.x
print(c.counter)