[問題]class內的參考觀念

看板Python作者時間7年前 (2018/07/21 13:25), 7年前編輯推噓4(409)
留言13則, 6人參與, 7年前最新討論串1/1
嗨囉 大家好 最近小弟在自學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://www.ptt.cc/bbs/Python/M.1532150747.A.76E.html

07/21 14:09, 7年前 , 1F
記得python是可以在實例中額外加上屬性的,沒記錯的話XD
07/21 14:09, 1F

07/21 14:09, 7年前 , 2F
所以等於是新增了name屬性到acct中
07/21 14:09, 2F

07/21 14:09, 7年前 , 3F
太神奇了xD 學到一課 謝謝你~ ※ 編輯: LouisFFs (223.140.167.7), 07/21/2018 14:24:50

07/21 17:34, 7年前 , 4F
可以直接加 記得是不太建議這麼做!
07/21 17:34, 4F

07/21 20:03, 7年前 , 5F
從其他語言過來真的會覺得很不習慣,我也是這樣
07/21 20:03, 5F

07/21 23:49, 7年前 , 6F
可以研究 __get__這個方法
07/21 23:49, 6F

07/23 10:45, 7年前 , 7F
我自己用的理解方法是,(先不要管slot 相關的東西)
07/23 10:45, 7F

07/23 10:45, 7年前 , 8F
,一個object 可以看成一個dict, a.foo=bar 可以看成
07/23 10:45, 8F

07/23 10:45, 7年前 , 9F
a_internal_dict[“foo”] = bar
07/23 10:45, 9F

07/24 22:19, 7年前 , 10F
可以這麼做沒錯, 但建議都定義在__init__()較好讀
07/24 22:19, 10F

07/24 22:19, 7年前 , 11F
即使未來執行某method才會獲得self.value, 也建議
07/24 22:19, 11F

07/24 22:20, 7年前 , 12F
在__init__()時視情況先給空值self.value=None 之類的
07/24 22:20, 12F

07/24 22:22, 7年前 , 13F
寫在class也行, 總之讓讀code第一眼就看到輪廓比較好
07/24 22:22, 13F
謝謝大家的建議!! ※ 編輯: LouisFFs (114.24.17.29), 07/25/2018 01:15:49
文章代碼(AID): #1RKiFRTk (Python)
文章代碼(AID): #1RKiFRTk (Python)