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
,因此它们具有不同的值。列表不同的原因很简单,就是修改对象(例如分配项)不会导致任何名称绑定。