Python 制作“内置”x27;你的类属性中有什么?

Python 制作“内置”x27;你的类属性中有什么?,python,class,attributes,built-in,Python,Class,Attributes,Built In,我希望a和myclass.a具有相同的值。为什么不呢 另外,为什么要像这样使用\uuuu内置是另一个问题。Python没有引用。分配值,例如使用= 如果您想要这种行为,您需要一个可变对象,例如一个包含一个元素的列表: >>> import __builtin__ >>> class MyClass: ... def __init__(self): ... self.a = 2 ... __builtin_

我希望
a
myclass.a
具有相同的值。为什么不呢


另外,为什么要像这样使用
\uuuu内置是另一个问题。

Python没有引用。分配值,例如使用
=

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

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

但是,如果你真的想把这样的东西放到
\uuuu内置文件中,请重新考虑Python没有引用。分配值,例如使用
=

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

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

但是,如果你真的想把这样的东西放到
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。你是对的,我可以看到列表/元组/dict像我期望的那样工作,但我看不到int/float/strings的行为应该如何不同。
x=1
将局部范围内的名称
x
绑定到值为
1
的整数对象。如果现在执行
x=5
x
将被重新绑定到一个值为
5
的新整数。它不会修改以前绑定的整数-因此,如果在这些赋值之间执行
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuy=x
,两个名称都将指向
1
,但第二个赋值仅重新绑定
x
,而不是
\uuuuuuuuuuuuuuuuuuuuuuuuy
,因此它们具有不同的值。列表不同的原因很简单,就是修改一个对象(例如分配一个项目)不会导致任何名称绑定。我恐怕不理解它背后的逻辑。你是对的,我可以看到列表/元组/dict像我期望的那样工作,但我看不到int/float/strings的行为应该如何不同。
x=1
将局部范围内的名称
x
绑定到值为
1
的整数对象。如果现在执行
x=5
x
将被重新绑定到一个值为
5
的新整数。它不会修改以前绑定的整数-因此,如果在这些赋值之间执行
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuy=x
,两个名称都将指向
1
,但第二个赋值仅重新绑定
x
,而不是
\uuuuuuuuuuuuuuuuuuuuuuuuy
,因此它们具有不同的值。列表不同的原因很简单,就是修改对象(例如分配项)不会导致任何名称绑定。