0
>>> 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

我希望amyclass.a具有相同的价值。他们为什么不呢?

PS。为什么你会这样使用__builtin__是另一个问题。

4

1 回答 1

6

Python 没有引用。分配一个值,例如使用= 重新绑定名称

如果你想要这样的行为,你需要一个可变对象,例如一个包含一个元素的列表:

>>> 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__.

于 2012-05-17T15:08:10.667 回答