課程
/后端開發
/Python
/Python3 進階教程(新版)
為什么用getattr不能獲得name
2021-03-10
源自:Python3 進階教程(新版) 4-2
正在回答
class?Person(object): ????def?__init__(self,?name,?gender,?score): ????????self.name?=?name ????????self.gender?=?gender ????????self.score?=?score ????def?__str__(self): ????????return?'name:{},gender:{},score:{}'.format(self.name,?self.gender,?self.score) ????def?__repr__(self): ????????return?'name:{},gender:{},score:{}'.format(self.name,?self.gender,?self.score) n?=?Person('Bob',?'Male',?'97') print(n) m?=?getattr(n,?'name',?'void') print(m)
這樣就沒問題。? ?我看不懂你那第13行 b.tian 是個什么東西,而且getattr里對象和屬性用逗號分隔,你用的啥?
getattr可以接收3個參數,用逗號隔開,第一個是對象,第二個是屬性,第三個是返回值,返回值可以不寫,但如果沒有該屬性就會報錯。我寫的加了返回值,如果屬性不存在,就會返回 void ,而不會報錯。
舉報
學習函數式、模塊和面向對象編程,掌握Python高級程序設計
2 回答為什么要def set_name(self,name)
2 回答為什么創建實例的時候count不會被重置到0?
3 回答定義調用問題:為什么set方法不起作用。1.一個@classmethod下,set在get后,不行;set在get前,可行。2.分別類定義set和get,可行。
3 回答為什么會運行失敗
1 回答為什么沒有像示例那樣輸出I am a Person, my name is Tim I am a Student, my name is Bob I am a Teacher, my name is Alice
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2021-03-11
這樣就沒問題。? ?我看不懂你那第13行 b.tian 是個什么東西,而且getattr里對象和屬性用逗號分隔,你用的啥?
getattr可以接收3個參數,用逗號隔開,第一個是對象,第二個是屬性,第三個是返回值,返回值可以不寫,但如果沒有該屬性就會報錯。我寫的加了返回值,如果屬性不存在,就會返回 void ,而不會報錯。