下面的代码在python2.7中使用_x.__dict__['c']=8
class _x:
def __init__(self):
self.a = 6
self.b = 7
_x.__dict__['c']=8
print("good!")
y=_x()
print(y.__dict__)
print(_x.__dict__)
输出:
good!
{'a': 6, 'b': 7}
{'c': 8, '__module__': '__main__', '__doc__': None, '__init__': <function __init__ at 0x00000000049227B8>}
上面的代码在python3.6中不适用
_x.__dict__['c']=8
并出现错误:
TypeError Traceback (most recent call last)
<ipython-input-5-b4146e87f5a4> in <module>()
6 print("good!")
7
----> 8 y=_x()
9 print(y.__dict__)
10 print(_x.__dict__)
<ipython-input-5-b4146e87f5a4> in __init__(self)
3 self.a = 6
4 self.b = 7
----> 5 _x.__dict__['c']=8
6 print("good!")
7
TypeError: 'mappingproxy' object does not support item assignment
有什么建议吗?你知道吗
你有什么理由尝试使用非公共接口吗?如果出于某种原因您想在实例化期间设置类属性,请尝试
如果要动态设置访问权限,请使用^{}
this answer中描述的可变性变化背后的推理
可以通过在变量名之前指定类名来设置类变量。你知道吗
更改:
收件人:
相关问题 更多 >
编程相关推荐