为什么通过 class 对象更改对象本身不起作用?
Why changing object itself through class object doesn't work?
class Cat:
def func(self):
self = None
a = Cat()
print(a)
a.func()
print(a)
我以为我会得到 None 第二个打印功能,但我得到了两个打印的相同对象地址。为什么我不能用 class 方法修改对象?
在 class 方法中,self
是一个成为局部作用域一部分的参数。分配给任何局部范围变量只会改变局部范围。如果您要分配给 self
的属性,例如
self.foo = “Bar”
然后您将修改对象本身。
此外,该对象在调用(全局)范围内被 a
引用,该引用将防止对象被破坏。
换句话说,self
和 a
都引用同一个对象,分配 self=None
只会删除其中一个引用。
class Cat:
def func(self):
self = None
a = Cat()
print(a)
a.func()
print(a)
我以为我会得到 None 第二个打印功能,但我得到了两个打印的相同对象地址。为什么我不能用 class 方法修改对象?
在 class 方法中,self
是一个成为局部作用域一部分的参数。分配给任何局部范围变量只会改变局部范围。如果您要分配给 self
的属性,例如
self.foo = “Bar”
然后您将修改对象本身。
此外,该对象在调用(全局)范围内被 a
引用,该引用将防止对象被破坏。
换句话说,self
和 a
都引用同一个对象,分配 self=None
只会删除其中一个引用。