image

    在python程式中,常常會看到__name__這種用法,其中一個名稱,前後都是雙底線,這就是坊間流傳的"dunder method",也是傳說中的"Magic Method".到底有什麼魔力可以叫做Magic呢?

可以看我以下的介紹與說明

一、__init__使用

先來看一下我寫的程式,這一大串,我在下方輸入那邊會解釋。

image

(一)用途

我的上方程式,現在主要是要輸入每個學生對應到他的成績,__init__裡面可以放入每個學生的參數

(二)程式解釋

可以參考我上方的程式圖片,我以下只是一行一行解釋。

(1)輸入內容

class Student:
    def __init__(self,name,grade):

    __init__後面的self一定要放,之後後面放自己想要呈現的內容都要用逗號隔開。我是想要呈現學生的姓名(name)以及成績(grade)

 

        self.name=name
       self.grade=grade

這一步是把name和game例項化,給予引數

 

k= Student('Kevin',100)
print(k)

假設一個學生分數100
然後print出來

(2)輸出內容

<__main__.Student object at 0x000002495F61D940>

我們會發現,輸出的內容會是存在記憶體的位置。

記住__init__的使用方式後,這會跟其他功能組成一個組合技。

 

二、__str__

範例一:

    我是沿用上一個內容,裡面多加一個__str__

image

 

(一)定義

   就是把一個類的實例變成str(字串),並且打印顯示。

(二)程式解釋

(1)輸入內容

    def __str__(self):
        return self.name+':'+str(self.grade)
   

這程式就是定義好我__init__裡的name以及grade要如何print出來,顯示的內容定義好後裔return。

記住:是要用return,而不是用print。

 

k= Student('Kevin',100)
h=Student('Hank',92)
print(k,h)

我是只用兩個同學,其實可以用超過2個同學,甚至import檔案,我這裡只是用兩個同學示範一下,然後print出來

(可以知道Kevin是學霸)

 

(2)輸出內容

 

Kevin:100 Hank:92

我覺得這樣的輸出不錯

 

範例二:

image

    這個我只是小改return的方式

 

        return  f"{self.name}:{self.grade}"

其實前面放個f再來用上引號""裡面都用括號刮起來,輸出結果也是一樣的。

 

 

arrow
arrow
    全站熱搜

    戰昇 發表在 痞客邦 留言(0) 人氣()