作者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/cn.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