在python程式中,常常會看到__name__這種用法,其中一個名稱,前後都是雙底線,這就是坊間流傳的"dunder method",也是傳說中的"Magic Method".到底有什麼魔力可以叫做Magic呢?
可以看我以下的介紹與說明
一、__init__使用
先來看一下我寫的程式,這一大串,我在下方輸入那邊會解釋。
(一)用途
我的上方程式,現在主要是要輸入每個學生對應到他的成績,__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__
(一)定義
就是把一個類的實例變成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
我覺得這樣的輸出不錯
範例二:
這個我只是小改return的方式
return f"{self.name}:{self.grade}"
其實前面放個f再來用上引號""裡面都用括號刮起來,輸出結果也是一樣的。