|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- class Const:
- l = []
- #def __init__(self):
- #self.l = [] 当采用#部分时候程序会报错为AttributeError:'Const' object has no attribute 'l'
- def __setattr__(self,name,value):
- if name.isupper():
- if name not in self.l:
- self.l.append(name)
- super().__setattr__(name,value)
- else:
- print('常量无法改变!')
-
- else:
- print('常量名必须由大写字母组成!')
复制代码 属性l的两种方式为什么会差生这样的差别,是因为__setattr__()函数和其他魔法方法不一样吗?比如
- class A:
- def __init__(self):
- self.l = []
- def f(self):
- self.l.append('FishC')
- return self.l
复制代码 此时,就不会出现上述的报错信息。
|
|