[英]How to call internal functions inside the constructor class?
你好,我有這個代碼
class Test(object):
def start_conn(self):
pass
def __init__(self):
self.conn = start_conn()
但是此代碼會出現此錯誤:
NameError: global name 'start_conn' is not defined
如果我寫self.conn = self.start_conn()
程序正常工作,我的問題是,當我創建一個新實例時,必須用self調用類的方法嗎? 或者是我身邊的設計錯誤?
非常感謝
簡而言之,這是必須的。 您必須引用存儲方法的容器。 大多數時候這意味着指self
。
其工作方式如下。 定義(新式)類時
class FooClass(object):
def my_method(self, arg):
print self.my_method, arg
您創建一個type
對象,其中包含處於未綁定狀態的方法。 然后,您可以通過類的名稱引用該未綁定的方法(即通過FooClass.my_method
); 但要使用該方法,您必須通過self
參數顯式傳遞FooClass
對象(如FooClass.my_method(fooclass_instance, arg)
)。
然后,當您實例化您的類( f = FooClass()
)時, FooClass
的方法綁定到特定的實例f
。 然后,每個方法中的self
指的是那個實例( f
); 這是自動的,因此您不必再明確地將f
傳遞給方法。 但你仍然可以做FooClass.my_method(f, arg)
; 這相當於f.my_method(arg)
。
但請注意,在這兩種情況下, self
都是容器,通過該容器將類的其他方法傳遞給my_method
,而my_method
無法通過任何其他途徑訪問它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.