1. 程式人生 > 實用技巧 >Python面向物件中的self到底是什麼?

Python面向物件中的self到底是什麼?

初次接觸類的概念,在學習的網頁上,對self的解釋是self是方法的一個引數,在方法呼叫的時候,這個引數是預設傳引數的
我們看一個例子

很多人學習python,不知道從何學起。
很多人學習python,掌握了基本語法過後,不知道在哪裡尋找案例上手。
很多已經做案例的人,卻不知道如何去學習更加高深的知識。
那麼針對這三類人,我給大家提供一個好的學習平臺,免費領取視訊教程,電子書籍,以及課程的原始碼!
QQ群:101677771

class Stu:
    def __init__(self,name,age):
        print("在__init__方法中id:",id(self))
        self.name = name
        self.age = age
    
    def run(self):
        print("在run方法中",id(self))
        print("{name} is running".format(name=self.name))
123456789

接著我們打印出self在記憶體中的id試試

s = Stu("zr",18)
print("s的記憶體地址",id(s))
s.run()
123

輸出如下


可以看出,在__init__函式,還是run函式,還是Stu例項化後的s,self在記憶體中的id都是相同的。
現在來解釋上面標記的那句話
self是方法的一個引數:可以很明顯的看到在上面的Stu類中,self是__init__方法中與name和age一樣的引數
在方法呼叫的時候,這個引數是預設傳引數的:我們在s = Stu(“zr”,18)中例項化Stu的時候,self引數我們並沒有去賦值,而是預設傳入的,誰例項化了Stu,誰就是self,__init__方法在執行時,self就是那個s