| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 本帖最后由 huyanmin 于 2021-6-17 18:42 编辑  
 
#编写一个 Counter 类,用于实时检测对象有多少个属性? 
- class Counter:
 
 -         k = []
 
 -         def __init__(self):
 
 -                 self.counter = 0
 
 -                 
 
 -                 
 
 -         def __setattr__(self, name, value): #下面有演示,为什么设置一次属性,__setattr__()方法,执行了两次
 
 -                 print('我是setattr')
 
 -                 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)
 
 
  复制代码 
 
 
''' 
>>> c =Counter 
>>> c=Counter() 
我是setattr 
>>> c.y=88  #为什么设置一次属性,__setattr__()方法,执行了两次 
我是setattr 
我是setattr 
''' |   
 
 
 
 |