从你的类属性制作__builtin__?

时间:2012-05-17 15:06:45

标签: python class attributes built-in

>>> 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__是另一个问题。

1 个答案:

答案 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__,请重新考虑。