Python 将对象的实例声明为';全球';在'__初始';
我正在维护一个用Python编写的应用程序,遇到了如下情况:Python 将对象的实例声明为';全球';在'__初始';,python,Python,我正在维护一个用Python编写的应用程序,遇到了如下情况: class A(): def __init__(self): ... global a a = self ... >>> o1 = A() >>> a is o1 # o1 was most recently instantiated True >>> o2 = A() >>> a is
class A():
def __init__(self):
...
global a
a = self
...
>>> o1 = A()
>>> a is o1 # o1 was most recently instantiated
True
>>> o2 = A()
>>> a is o1 # o1 is no longer the most recently instantiated ...
False
>>> a is o2 # ... o2 is
True
有人能详细解释一下这里发生了什么,以及宣布自我为全球的目的是什么吗?这两行
global a
a = self
使名为a
的全局变量引用当前调用其\uuuu init\uuu
方法的任何对象。实际上,应用程序似乎在跟踪最近实例化的A
的实例。它应该是这样工作的:
class A():
def __init__(self):
...
global a
a = self
...
>>> o1 = A()
>>> a is o1 # o1 was most recently instantiated
True
>>> o2 = A()
>>> a is o1 # o1 is no longer the most recently instantiated ...
False
>>> a is o2 # ... o2 is
True