亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

__repr__方法似乎沒有被調用

在定義方法時,如果__str__和__repr__方法中定義返回的語句不一樣,在運行之后,print(s)輸出的還是__srt__方法中定義的語句,這是為什么

正在回答

1 回答

關于調用兩種方法的時機

  • 使用print()時

  • 使用%s和f'{}'拼接對象時

  • 使用str(x)轉換對象x時

在上述三種場景中,會優先調用對象的__str__()方法;若沒有,就調用__repr__()方法;若再沒有,則顯示其內存地址。

特別地,對于下面兩種場景:

  • 用%r進行字符串拼接時

  • 用repr(x)轉換對象x時

則會調用這個對象的__repr__()方法;若沒有,則不再看其是否有__str__()方法,而是顯示其內存地址。


class?Person(object):
????def?__init__(self,?name,?gender):
????????self.name?=?name
????????self.gender?=?gender
????????
class?Student(Person):????
????def?__init__(self,?name,?gender,?score):????????
????????super(Student,?self).__init__(name,?gender)????????
????????self.score?=?score???
????????
????def?__str__(self):????????
????????return?'Student:?{},?{},?{}'.format(self.name,?self.gender,?self.score)????
????def?__repr__(self):????????
????????return?'STUDENT:?{},?{},?{}'.format(self.name,?self.gender,?self.score)
????????
s?=?Student('Bob',?'Male',?88)

print(s)
print('%s'?%?s)
print('%r'?%?s)
print(str(s))
print(repr(s))


8 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

__repr__方法似乎沒有被調用

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號