A:__str __()と__repr __()保存方法:
1 クラスDemoClass: 2 DEF __init__ (自己、名前、年齢): 3 self.name = 名 4 self.age = 年齢 5 6 DEF __str__ (自己): 7 #プリント() - >调它 8 リターン 」名: {}、年齢:{} " .format(self.name、self.age) 9 10 11 なら __name__ == " __main__ " : 12 デモ= DemoClass(" トム"、18 ) 13 印刷(デモ)#この時点でコールがデモ.__ STR __(ある) 14 #なしオーバーライド__strの__の場合(<。0x00000238B1D6FBE0 AT __メイン__ DemoClassオブジェクト>が出力される) 15は、 '' ' 16 :出力 。17 名前:トム、年齢: 18がある さ18 『』 '
__repr __()メソッドは、スペアタイヤを保持することです。
1 クラスDemoClass: 2 DEF __init__ (自己、名前、年齢): 3 self.name = 名 4 self.age = 年齢 5 6 DEF __repr__ (自己): 7 #プリント() - >调它 8 リターン 」名: {}、年齢:{} " .format(self.name、self.age) 9 10 DEF __str__ (自己): 11 リターン " 名:{}、年齢:{} 」.format(self.name、self.age ) 12 13 なら __name__ == "__main__ " : 14 デモ= DemoClass(" トム"、18である) 15 プリント(デモ) 16 。17 '' ' 18で 出力: 19 名:トム、年齢:18は 20である 21である 結果は、プリント()呼び出し配列である: 22である プリント() - > STR() - >デモ.__ STR __() - >デモ.__のreprの__()
しかし、__のreprの__()インタラクティブな環境での使用に適した! 23 '' '
それでも、これらの2つの方法は、戻り値の文字列型を保持しなければなりません。
2:__カスタム書式ウェイ__format() :
format()メソッドは、(実際に転送__formatの__です)
1 format_dict = { 2 ' YMD ':" {} {0.mon 0.year 0.day} {} " 、 3。 ' Y:M:D ':" {} 0.year:0.mon {}:{ } 0.day " 4 ' YMD ':" {} 0.year - 0.mon} { - } {0.day 」、 5。 #0は、自クラスのインスタンスオブジェクトを表す6 } 7つの。 クラスDemoClass: 8。 DEF __init__ (セルフ、年、月、日): 9 self.year =今年 10 self.mon = 月 11 self.day = 日 12 13 DEF __format__ (自己、キー): 14 リターンformat_dict [キー] .format(自己) 15 16 17 なら __name__ == " __main__ " : 18 デモ= DemoClass(2019、 8、6 ) 19 プリント(フォーマット(デモ、' YMD ' )) 20 プリント(フォーマット(デモ、' Y:M:D ' )) 21 プリント(フォーマット(デモ、' YMD' )) 22 ' '' 23 の出力 24 2019年8 6 25 6:2019 8: 26である、 2019年8月6日 27 ' ''