[问题]class内的参考观念

楼主: LouisFFs (愿翱翔)   2018-07-21 13:25:44
嗨囉 大家好 最近小弟在自学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到这边觉得有点卡卡
怕走火入魔 请大大指点 谢谢!
作者: guaptpan (Gua)   2018-07-21 14:09:00
记得python是可以在实例中额外加上属性的,没记错的话XD所以等于是新增了name属性到acct中https://i.imgur.com/w9S83pi.jpg
作者: windclara (null)   2018-07-21 17:34:00
可以直接加 记得是不太建议这么做!
作者: james732 (好人超)   2018-07-21 20:03:00
从其他语言过来真的会觉得很不习惯,我也是这样
作者: Yshuan (倚絃)   2018-07-21 23:49:00
可以研究 __get__这个方法
作者: adrianshum (Alien)   2018-07-23 10:45:00
我自己用的理解方法是,(先不要管slot 相关的东西),一个object 可以看成一个dict, a.foo=bar 可以看成a_internal_dict[“foo”] = bar
作者: mychiux413 (小邱)   2018-07-24 22:19:00
可以这么做没错, 但建议都定义在__init__()较好读即使未来执行某method才会获得self.value, 也建议在__init__()时视情况先给空值self.value=None 之类的写在class也行, 总之让读code第一眼就看到轮廓比较好

Links booklink

Contact Us: admin [ a t ] ucptt.com