getattr(object, name)的用法與後面加了()的用意
在教學中寫到: def spam(s): for attr in ['isnumeric', 'isdecimal', 'isdigit']: print(attr, getattr(s, attr)()) 而菜鳥教程寫到,getattr用法是->getattr(object, attr), 並回傳屬性值 >>>class A(object): ... bar = 1 ... >>> a = A() >>> getattr(a, 'bar') # 获取属性 bar 值 1 想問一下教學中getattr(s, attr)()後面的()用處為何?是s.attr()的概念嗎?(e.g. : s.isnumeric())
回答列表
-
2020/11/19 下午 11:23張維元 (WeiYuan)贊同數:1不贊同數:0留言數:0
嗨,你好
getattr(s, attr) 會回傳 attr 這個屬性,但 attr 剛好又是 function ,所以可以被呼叫。也就是你講的 s.isnumeric() 的意思沒錯。
嗨,你好,我是維元,持續在不同的平台發表對 #資料科學、 #網頁開發 或 #軟體職涯 相關的文章。如果對於內文有疑問都歡迎與我們進一步的交流,都可以追蹤我的 Facebook 或 技術部落格 ,也會不定時的舉辦分享活動,一起來玩玩吧 ヽ(●´∀`●)ノ
-
2020/11/20 上午 09:43楊哲寧贊同數:1不贊同數:0留言數:0
承如維元專家提到的,您可以使用查看getattr('3', 'isnumeric')返回的屬性,其為
,代表其是可以被調用的function,之後也會在其他程式碼看到相同的操作,我們都可以用callable()查看物件屬性。 ```python callable(getattr('3', 'isnumeric')) #return -> True ```