天天看點

Python在定義類方法時為什麼要顯示聲明self參數

class APythonClass:
    def APytonClassFuntion(self):
        print self.__dict__      

就拿C++和Java來說,在調用方法的時候都會将預設的對象執行個體作為第一個參數傳入定義的對象方法,在方法中我們通過this關鍵去通路對象的屬性與方法。從某種程度上來說,編譯器悄悄修改了我們定義的方法,為每個方法增加了一個參數,并在方法被調用時,又偷偷将執行個體的位址作為方法的第一個實參傳入。

其實Python也是這麼做的,唯一不同的是在Python類中如果你想在方法中通路對象屬性,你必須等顯示聲明這個參數(一般約定是self),那Python為什麼要這麼做呢?為什麼不像其他語言那樣編譯器悄悄改寫方法,然後跟開發人員約定一個關鍵字比如this去通路執行個體的屬性和方法呢?

轉載于:https://www.cnblogs.com/leonard1983/archive/2013/03/12/2956569.html