C++中的this和Python的self對比


  Python,當實例對象調用函數(函數其實都是屬於類空間的)的時候,系統會自動將對象本身傳入 函數在定義時的第一個變量一般是self。(但self並不是關鍵字,用其他名字也可以)         定義時,這個self必須寫出來,而調用時,不用你自己將實例對象傳入。

  C++,當實例對象調用函數時,系統也會將實例對象傳入函數,不同是不管是定義還是調用,存儲對象的這個 參數都是隱藏的,傳遞過程也是自動且不可見的。只有在函數內部才可以顯性的使用它——this。而且this是一個關鍵字。        

也就是說C++類里定義的函數默認都是給實例用的,除非加上static關鍵字!此時才是給類用的。(不過實例也可以調用靜態函數,但是類無法調用非靜態函數)。

      而python並沒有強制說哪個函數是給類用的,哪些函數是給實例對象用的,他只是規定,如果是類調用函數 那么就是普通的調用,如果是實例對象調用函數,系統就會自動把實例對象傳給函數定義時的第一個參數。如:

class Stack:
    def test(x):
        print(x)

s = Stack()
Stack.test(123)          ##類調用test函數
s.test()  ##實例對象調用test函數,此時test不能再傳參了,不然會提示你多傳了參數。

這個例子打印結果為:
123
<__main__.Stack object at 0x01F6FE50>       ##這是s這個實例對象

這也是,為什么可以不用self的原因。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM