|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
>>> class Counter:
k = []
def __init__(self):
self.counter = 0
def __setattr__(self, name, value):
if name != 'counter':
if name not in self.k:
self.counter += 1
self.k.append(name)
super().__setattr__(name, value)
def __delattr__(self, name):
self.counter -= 1
self.k.remove(name)
super().__delattr__(name)
请问上述代码中的 super().__setattr__(name, value)和super().__delattr__(name)有什么作用?实在是看不懂!
super() 就是调用父类原有的方法嘛
因为你重写 __setattr__ 和 __delattr__ 会覆盖父类原有的这个方法的功能,而我们目的并不是全部重写,只是增加了一些功能,比如你这:- def __setattr__(self, name, value):
- if name != 'counter':
- if name not in self.k:
- self.counter += 1
- self.k.append(name)
复制代码
如果单纯这样写,不用super调用就会失去原有的功能,设置变量,而你重新调用了父类的方法,就等于你重写的这个方法不仅附带父类的功能还有自己新的功能
|
|