程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python魔法方法(5):__repr__(self) 方法

編輯:Python

Python 的對象天生擁有一些神奇的方法,它們總被雙下劃線所包圍,它們是面向對象的 Python 的一切。它們是可以給你的類增加魔力的特殊方法,如果你的對象實現(重載)了某一個魔法方法,那麼這個方法就會在特殊的情況下自動被 Python 所調用。

功能

定義對象被 repr() 函數或互交式解釋器調用時的行為,該方法一般面向程序設計者。

參數

self 表示對象本身。

返回值

必須是一個字符串,否則拋出異常。

示例:

class MyText:
def __repr__(self) -> str:
return 'My is repr'
sample = MyText()
# My is repr
print(sample)
# My is repr
print(repr(sample))

結果:

My is repr
My is repr

__repr__() 是 Python 類中的一個特殊方法,由 object 對象提供,由於所有類都是 object 類的子類,所以所有類都會繼承該方法。

該方法主要實現 “自我描述” 功能——當直接打印類的實例化對象時,系統將會自動調用該方法,輸出對象的自我描述信息,用來告訴外界對象具有的狀態信息。

但是,object 類提供的 __repr__() 方法總是返回一個對象(類名 + obejct at + 內存地址),這個值並不能真正實現自我描述的功能!如下:

class Person():
def __init__(self, name, age):
self.name = name
self.age = age
person = Person('zk', 20)
print(person)
print(person.__repr__())

執行結果:

<__main__.Person object at 0x0000020F6A467B20>
<__main__.Person object at 0x0000020F6A467B20>

因此,如果你想在自定義類中實現 “自我描述” 的功能,那麼必須重寫 repr 方法:

class Person():
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return 'Person類,有name和age兩個屬性'
person = Person('zk', 20)
print(person)
print(person.__repr__())

執行結果:

Person類,有name和age兩個屬性
Person類,有name和age兩個屬性


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved