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

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

定義的方法是`__str__`,為什么用在實例上時不用寫雙下劃線了?str(bob)

class?Person(object):????
def?__init__(self,?name,?gender):????????
self.name?=?name????????
self.gender?=?gender????
def?__str__(self):????????
return?'name:?{},?gender:?{}'.format(self.name,?self.gender)
bob?=?Person('Bob',?'Male')
str(bob)?#?==>?'name:?Bob,?gender:?Male'

定義的方法是`__str__`,為什么用在實例上時不用寫雙下劃線了?

正在回答

2 回答

你這完全搞錯了,__str__是object對象的內置函數,而str()是python全局的一個內置函數,這兩個不是一個函數

在使用? ? ?str(a)? ? ?時等價于? ? a.__str__()? ? ? ,即str方法會去調用對象的內置函數__str__.

這里你可能會問,那為啥不寫a.__str__(),而是寫成str(a)。因為習慣規定雙下劃線的為私有級別,不建議直接調用,而且個人覺得寫起來代碼也不好看

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

這沒啥原理,創始人定的。他開頭怎么定,后人跟著怎么走。就像‘’我愛你‘’為什么代表我愛你,而不是‘’去吃飯‘’代表我愛你,都是無解的。

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

舉報

0/150
提交
取消

定義的方法是`__str__`,為什么用在實例上時不用寫雙下劃線了?str(bob)

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

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

幫助反饋 APP下載

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

公眾號

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