課程
/后端開發(fā)
/Python
/Python3 進(jìn)階教程(新版)
為什么用getattr不能獲得name
2021-03-10
源自:Python3 進(jìn)階教程(新版) 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 是個(gè)什么東西,而且getattr里對(duì)象和屬性用逗號(hào)分隔,你用的啥?
getattr可以接收3個(gè)參數(shù),用逗號(hào)隔開,第一個(gè)是對(duì)象,第二個(gè)是屬性,第三個(gè)是返回值,返回值可以不寫,但如果沒有該屬性就會(huì)報(bào)錯(cuò)。我寫的加了返回值,如果屬性不存在,就會(huì)返回 void ,而不會(huì)報(bào)錯(cuò)。
舉報(bào)
學(xué)習(xí)函數(shù)式、模塊和面向?qū)ο缶幊?,掌握Python高級(jí)程序設(shè)計(jì)
2 回答為什么要def set_name(self,name)
2 回答為什么創(chuàng)建實(shí)例的時(shí)候count不會(huì)被重置到0?
3 回答定義調(diào)用問題:為什么set方法不起作用。1.一個(gè)@classmethod下,set在get后,不行;set在get前,可行。2.分別類定義set和get,可行。
3 回答為什么會(huì)運(yùn)行失敗
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號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2021-03-11
這樣就沒問題。? ?我看不懂你那第13行 b.tian 是個(gè)什么東西,而且getattr里對(duì)象和屬性用逗號(hào)分隔,你用的啥?
getattr可以接收3個(gè)參數(shù),用逗號(hào)隔開,第一個(gè)是對(duì)象,第二個(gè)是屬性,第三個(gè)是返回值,返回值可以不寫,但如果沒有該屬性就會(huì)報(bào)錯(cuò)。我寫的加了返回值,如果屬性不存在,就會(huì)返回 void ,而不會(huì)報(bào)錯(cuò)。