簡體   English   中英

如何在構造函數類中調用內部函數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM