# -*- coding=utf-8 -*-
class
hello
:def
__init__
(self)
:print
("initialize a object!"
)if __name__ ==
"__main__"
: hello = hello(
)print
(hello)
執行結果:
initialize a object!
<__main__.hello object at 0x000002e14cbd95c8>
如果我想改變hello物件的顯示輸出,讓他更具可讀性,或者新增一些資訊來簡化除錯,該怎麼做呢?
可以重新定義它的 __str__()方法和__repr__()方法。
使用__repr__()方法:
# -*- coding=utf-8 -*-
class
hello
:def
__init__
(self)
:print
("initialize a object!"
)def
__repr__
(self)
:return
"hello 類的例項"
if __name__ ==
"__main__"
: hello = hello(
)print
(hello)
執行結果:
initialize a object!
hello 類的例項
使用__str__()方法:
# -*- coding=utf-8 -*-
class
hello
:def
__init__
(self)
:print
("initialize a object!"
)def
__str__
(self)
:return
"hello 類的例項"
if __name__ ==
"__main__"
: hello = hello(
)print
(hello)
執行結果:
initialize a object!
hello 類的例項
從上面的使用中,貌似__str__()和__repr__()沒有什麼區別,不,其實是有區別的。
# -*- coding=utf-8 -*-
class
hello
:def
__init__
(self)
:print
("initialize a object!"
)def
__str__
(self)
:return
"__str__:hello 類的例項"
def__repr__
(self)
:return
"__repr__:hello 類的例項"
if __name__ ==
"__main__"
: hello = hello(
)print
(hello)
執行結果:
initialize a object!
__str__:hello 類的例項
如果同時出現__str__()和__repr__()方法,優先使用__str__()方法。
如果沒有定義__str__(),會使用__repr__()來代替輸出;
如果__repr__()也沒有定義,看到的就是預設的物件資訊:<main.hello object at 0x000002e14cbd95c8>。
當然,在兩種方法都有定義的情況下,可以使用==!r==格式化**來指定使用__repr__()輸出,替換掉預設的__str__()方法。
# -*- coding=utf-8 -*-
class
hello
:def
__init__
(self)
:print
("initialize a object!"
)def
__str__
(self)
:return
"__str__:hello 類的例項"
def__repr__
(self)
:return
"__repr__:hello 類的例項"
if __name__ ==
"__main__"
: hello = hello(
)print(""
.format
(hello)
)# 這裡使用!r格式化**指定用__repr__()輸出物件資訊
執行結果:
initialize a object!
__repr__:hello 類的例項
自定義__str__()和__repr__()方法是個好習慣,他可以簡化除錯和例項輸出。
上面的輸出只是驗證用的,真實的輸出資訊應該更有用些,比如:
f =
open
("game.py"
)print
(f)
執行結果:
遵循規範,我們給輸出資訊最好也要加上 < 和 > 。
息應該更有用些,比如:
f =
open
("game.py"
)print
(f)
執行結果:
遵循規範,我們給輸出資訊最好也要加上 < 和 > 。
python 獲取物件資訊
判斷物件型別,使用type 函式 判斷乙個物件是否是函式 使用types模組中定義的常量 import types type abs types.builtinfunctiontype true type lambda x x types.lambdatype true type x for x i...
python檢視物件的方法 獲取物件資訊
當我們拿到乙個物件的引用時,如何知道這個物件是什麼型別 有哪些方法呢?使用type 首先,我們來判斷物件型別,使用type 函式 基本型別都可以用type 判斷 type 123 type str type none 如果乙個變數指向函式或者類,也可以用type 判斷 type abs type a...
python 獲取物件資訊的方法
1 type 返回對應的class型別 例如 type 123 type 456 true type 123 int true type abc type 123 true type abc str true type abc type 123 false 2 isinstance 對於class的...