是否有一種聰明的方式來將對象初始化爲全局對象?所以,當我創建一個對象,如:將對象初始化爲全局對象
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