>>> import __builtin__
>>> class MyClass:
... def __init__(self):
... self.a = 2
... __builtin__.a = self.a
...
>>> myclass = MyClass()
>>> myclass.a = 4
>>> a = 2
>>> print a
2
>>> print myclass.a
4
我希望a
和myclass.a
具有相同的值。他们为什么不呢?
PS。为什么你会像这样使用__builtin__
是另一个问题。
答案 0 :(得分:6)
Python没有引用。分配一个值,例如使用=
rebinds the name。
如果你想要这样的行为,你需要一个可变对象,例如:包含一个元素的列表:
>>> import __builtin__
>>> class MyClass:
... def __init__(self):
... self.a = [2]
... __builtin__.a = self.a
...
>>> myclass = MyClass()
>>> myclass.a[0] = 4
>>> a[0] = 2
>>> print a
[2]
>>> print myclass.a
[2]
>>>
但是,如果您真的希望将此类内容放入__builtins__
,请重新考虑。