python中class(類)的使用,類的教學,類中的函數怎麼呼叫。

2020-10-09 16:00:44

我們先來看看這個程式碼

class Computer:

    screen = True

    def start(self):
        print('電腦正在開機中……')

my_computer = Computer()#範例化類
print(my_computer.screen)#列印類中的屬性值
my_computer.start()#啟動類中的方法

想要呼叫他語法是範例名.屬性範例名.方法

所以說最後我們列印出的內容是

True
電腦正在開機中……

來看看怎麼才能使用類中的值:

my_computer.screen
範例名.屬性
這樣就可以呼叫類中的屬性了

my_computer.start()
範例名.方法
這樣就可以啟動類中的函數

看到這裡很多人也明白怎麼使用類了,可是發現類中函數有一個self引數這個引數有什麼作用呢?
接下來我們看

class Chinese:

    name = '小張'  # 類屬性name

    def say(self, someone):  # 帶有兩個引數的方法
        print(someone + '是中國人')

person = Chinese()
print(person.name)
person.say('小張') 

輸出的結果是:

小張
小張是中國人

self呼叫時要忽略,'小張’傳給引數someone

為什麼忽略self,因為self會接收範例化過程中傳入的資料,當範例物件建立後,範例便會代替 self,self 是所有範例的替身,「替身」是什麼意思呢?就如上面這個程式碼一樣,傳參直接給了someone沒有給self,因為他被忽略了,但是他是存在的,因為沒有他,函數就不是範例化中的函數,所以大家只要記得在類中函數新增上self就行了。

self總結,self就是範例化類的意思,傳參時可以忽略。

我們接著走,細心的同學會發現,我們傳的引數小張給someone,然後再列印出 小張是中國人,其實我們沒必要這麼麻煩,直接看類的屬性中有小張的引數值,直接呼叫就好了
然後你們就會想到

class Chinese:

    name = '小張'  # 類屬性name

    def say(self):  # 帶有兩個引數的方法
        print(name + '是中國人')

person = Chinese()
print(person.name)
person.say() 

列印出來的結果

Traceback (most recent call last):
  File "one.py", line 10, in <module>
    person.say()
  File "one.py", line 6, in say
    print(name + '是中國人')
NameError: name 'name' is not defined

報錯找到不到name,為什麼呢?我上面不是寫了嘛?因為類裡面呼叫屬性需要先加範例化,那是不是寫Chinese().name是的,這樣寫沒有錯,但是我們沒必要這樣寫呢,我們上面說過self就是類的範例化,所以我們寫成self.name 就可以呼叫屬性了,

小總結:類的屬性呼叫前面加self.屬性名就可以了。self在類中就是Chinese(),我們完全可以把全部的self寫成Chinese(),有的人類的名字很長,寫程式碼時很不有好所以出現了self,帶代替的他的存在,傳參時也不會傳給他。

有同學又問,如果類裡面有兩個方法(函數)這麼辦?我下一個方法(函數)要呼叫上一個方法(函數)這麼呼叫,同理看下面的程式碼

class Chinese:

    def greeting(self):
        print('很高興遇見你')

    def say(self):
        self.greeting() 
        print('我來自中國')

person = Chinese()
# 建立範例person
person.say()
# 呼叫say()方法 

我們只要在前面加上一個self(範例)就可以了。大家可以複製程式碼到編譯器看看。

綜上,所以我們說self代表的是類的範例本身,方便資料的流轉。對此,我們需要記住兩點:

第一點:只要在類中用def建立方法時,就必須把第一個引數位置留給 self,並在呼叫方法時忽略它(不用給self傳參)。

第二點:當在類的方法內部想呼叫類屬性或其他方法時,就要採用self.屬性名self.方法名的格式。

接下來我們說說類中的初始化

定義初始化方法的格式是def init(self),是由init加左右兩邊的【雙】下劃線組成( initialize 「初始化」的縮寫)。

初始化方法的作用在於:範例物件建立時,該方法內的程式碼無須呼叫就會自動執行

我們看下面的程式碼

class Chinese:

    def __init__(self): 
        print('很高興遇見你,我是初始化方法')

person = Chinese()

執行出來的結果

很高興遇見你,我是初始化方法

少了一個呼叫的函數 person.__ init __()
為什麼呢?因為他時初始化,只要類的範例化建立出來就會自動執行,好比方說,你開啟電腦,他會自動載入C槽上的系統檔案,直到你開啟電腦桌面為止,剩下的才是你操作的內容,前面開啟電腦的過程都叫做類的初始化,自動執行了。

這時候有同學問,那我再初始化寫一些程式碼賦值給函數,能呼叫嗎?
在初始化中所有程式碼都是可以呼叫的,同理,在前面加一個self看下面的例子

class Chinese:
    def __init__ (self):
        self.mouth = 1  # self.不能丟
        self.eye = 2
    
    def body(self):
        print('我有%s張嘴巴' % self.mouth)
        print('我有%s隻眼睛' % self.eye)

person = Chinese()
person.body()

執行出來的結果就是

我有1張嘴巴
我有2隻眼睛

這樣大家應該也明白怎麼建立類,怎麼使用類的函數,怎麼呼叫類的函數了把,大家還有什麼不懂的問題可以方便留言在下方,我會更新檔案內容。喜歡的方便加關注點贊,感謝啦。