作者LouisFFs ()
看板Python
標題[問題]class內的參考觀念
時間Sat Jul 21 13:25:44 2018
嗨囉 大家好 最近小弟在自學python
有些小觀念 有點不太清楚 想請教大家
在此版第一次發文 若有違反版關 請告知 小弟自d
code:
class Account: #(1)
pass
def account(name,number,balance):
acct=Account() #(2)
acct.name=name #(3)
acct.number=number
acct.balance=balance
return acct
想請教的是在#(1)時class定義了Account物件 然後其內容pass 不撰寫
並且我們在#(2)這邊實際建立了一個object 並將acct此參考指向建立的object
上述大概沒什麼問題
但為什麼我們做像#(3)這類型的事情
明明Account內這個物件沒有定義的個任何的變數(參考) 並pass掉
我們卻可以讓acct.name ?!
小弟有摸過一點c++跟c#
已知python所有變數皆是參考
但自學python到這邊覺得有點卡卡
怕走火入魔 請大大指點 謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.140.167.7
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1532150747.A.76E.html
1F:推 guaptpan: 記得python是可以在實例中額外加上屬性的,沒記錯的話XD 07/21 14:09
2F:→ guaptpan: 所以等於是新增了name屬性到acct中 07/21 14:09
太神奇了xD 學到一課 謝謝你~
※ 編輯: LouisFFs (223.140.167.7), 07/21/2018 14:24:50
4F:推 windclara: 可以直接加 記得是不太建議這麼做! 07/21 17:34
5F:推 james732: 從其他語言過來真的會覺得很不習慣,我也是這樣 07/21 20:03
6F:推 Yshuan: 可以研究 __get__這個方法 07/21 23:49
7F:→ adrianshum: 我自己用的理解方法是,(先不要管slot 相關的東西) 07/23 10:45
8F:→ adrianshum: ,一個object 可以看成一個dict, a.foo=bar 可以看成 07/23 10:45
9F:→ adrianshum: a_internal_dict[“foo”] = bar 07/23 10:45
10F:→ mychiux413: 可以這麼做沒錯, 但建議都定義在__init__()較好讀 07/24 22:19
11F:→ mychiux413: 即使未來執行某method才會獲得self.value, 也建議 07/24 22:19
12F:→ mychiux413: 在__init__()時視情況先給空值self.value=None 之類的 07/24 22:20
13F:→ mychiux413: 寫在class也行, 總之讓讀code第一眼就看到輪廓比較好 07/24 22:22
謝謝大家的建議!!
※ 編輯: LouisFFs (114.24.17.29), 07/25/2018 01:15:49