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

私は同じ価値を期待aし、持っているでしょう。myclass.aなぜ彼らはしないのですか?

PS。なぜ__builtin__このように使用するのかは別の質問です。

4

1 に答える 1

6

Pythonには参照がありません。たとえばを使用して値を割り当てると= 、名前が再バインドされます

このような動作が必要な場合は、可変オブジェクトが必要です。たとえば、1つの要素を持つリストです。

>>> 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 に答える