|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- class Counter:
- def __init__(self):
- self.counter = 0 # 这里会触发 __setattr__ 调用
- def __setattr__(self, name, value):
- self.counter += 1
- “““既然需要 __setattr__ 调用后才能真正设置 self.counter 的值,所以这时候 self.counter 还没有定义,所以没法 += 1,错误的根源。”””
- super().__setattr__(name, value)
- def __delattr__(self, name):
- self.counter -= 1
- super().__delattr__(name)
复制代码
如果在__new__里定义count会不会出错呢?
- class Counter:
- def __init__(self):
- super().__setattr__("counter", 0) # 这里不会触发 __setattr__ 调用
- def __setattr__(self, name, value):
- self.counter += 1
- super().__setattr__(name, value)
- def __delattr__(self, name):
- self.counter -= 1
- super().__delattr__(name)
复制代码
|
|