程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python面試高頻問題:self到底是什麼

編輯:Python

Python面試中,如果想考核面試者對面向對象的理解,我會問這樣一個問題,請你談一談對self的理解?

self 這個很常見,我們定義一個python類的方法時,第一個參數就是self,代碼如下:

class MyDemo:
def test_self(self):
        pass

那麼我們真的理解了什麼是self嗎?我相信有好多同學,就是簡單地記住了:這是python中定義類方法的一個固定寫法,有self的就是類方法,沒有self的就是函數!的確,這是python中最基礎的方法和函數的區別。那麼self的本質又是什麼呢,其實他就是類的實例化對象!也就是說誰在用某個方法,self指的就是它。

我們看下面的例子

class MyClass:
def test_self(self):
print(self)
print("----------第一個實例----------")
my=MyClass()
print(my)
my.test_self()
print("----------第二個實例----------")
my1=MyClass()
print(my)
print(my1)

輸出:

<__main__.MyClass object at 0x00000066AF550448>

<__main__.MyClass object at 0x00000066AF550448>

----------第二個實例----------

<__main__.MyClass object at 0x00000066AF550448>

<__main__.MyClass object at 0x00000066AF550388>

從第二個實例的輸出結果我們可以看到,我們一共實例化了兩個實例,一個是<__main__.MyClass object at 0x00000066AF550448>,另一個是<__main__.MyClass object at 0x00000066AF550388>

繼續分析我們可以看到第一個實例中,實例化的my 和方法test_self(self) 中的self的值其實是一樣的!

因此我們可以得出結論:self就是實例化的對象!


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved