是否有一种聪明的方式来将对象初始化为全局对象?所以,当我创建一个对象,如:将对象初始化为全局对象
class A(object):
def __init__(self):
global self
super(A, self).__init__()
这显然是行不通的,但我很好奇,如果有来处理这就像在烧瓶g
一个不错的方式。
是否有一种聪明的方式来将对象初始化为全局对象?所以,当我创建一个对象,如:将对象初始化为全局对象
class A(object):
def __init__(self):
global self
super(A, self).__init__()
这显然是行不通的,但我很好奇,如果有来处理这就像在烧瓶g
一个不错的方式。
这是可能的,那不适用于self,因为self是您的构造函数中的一个参数。
class A(object):
def __init__(self):
global instance
instance = self
super(A, self).__init__()
A()
instance
<__main__.A at ...>
这可能仅在使用真的很边缘的情况下,我没有看到任何情况下,这将使感。
注意这只在创建实例时才起作用。如果您不想使用实例,但使用原始类,则可以将类名标记为全局:
global A
class A(object):
pass
这会创建引用“A”实例的* one *全局名称。每次调用'__init__'时,'instance'引用的实例都会改变。 – chepner
@chepner当然,这就是为什么我说“我没有看到任何有意义的情况。” – user312016
当然,使用'instance = A()'也可以达到同样的效果...... –
对象不是全局的,本地的或任何东西;它们都存在于堆中。 *名称*有范围。 – chepner
但是你能否创建一个对象,当init时,它使自己成为全局的 – Rob
不,因为* object *不是全局的;无论你使用什么名字*赋值*该对象具有一个作用域,但该信息对'__init__'方法不可用。 – chepner