Python 類和物件 改變物件的字串顯示

2021-09-27 06:55:37 字數 1751 閱讀 4106

你想改變物件例項的列印或顯示輸出,讓它們更具可讀性。

要改變乙個例項的字串表示,可重新定義它的__str__()__repr__()方法。例如:

class pair:

def __init__(self, x, y):

self.x = x

self.y = y

def __repr__(self):

return 'pair(, )'.format(self)

def __str__(self):

return '(, )'.format(self)

__repr__()方法返回乙個例項的**表示形式,通常用來重新構造這個例項。 內建的repr()函式返回這個字串,跟我們使用互動式直譯器顯示的值是一樣的。__str__()方法將例項轉換為乙個字串,使用str()print()函式會輸出這個字串。比如:

>>> p = pair(3, 4)

>>> p

pair(3, 4) # __repr__() output

>>> print(p)

(3, 4) # __str__() output

>>>

我們在這裡還演示了在格式化的時候怎樣使用不同的字串表現形式。 特別來講,!r格式化**指明輸出使用__repr__()來代替預設的__str__()。 你可以用前面的類來試著測試下:

>>> p = pair(3, 4)

>>> print('p is '.format(p))

p is pair(3, 4)

>>> print('p is '.format(p))

p is (3, 4)

>>>

自定義__repr__()__str__()通常是很好的習慣,因為它能簡化除錯和例項輸出。 例如,如果僅僅只是列印輸出或日誌輸出某個例項,那麼程式設計師會看到例項更加詳細與有用的資訊。

__repr__()生成的文字字串標準做法是需要讓eval(repr(x)) == x為真。 如果實在不能這樣子做,應該建立乙個有用的文字表示,並使用 < 和 > 括起來。比如:

>>> f = open('file.dat')

>>> f

>>>

如果__str__()沒有被定義,那麼就會使用__repr__()來代替輸出。

上面的format()方法的使用看上去很有趣,格式化**對應的是第1個引數的x屬性。 因此,在下面的函式中,0實際上指的就是self本身:

def __repr__(self):

return 'pair(, )'.format(self)

作為這種實現的乙個替代,你也可以使用%操作符,就像下面這樣:

def __repr__(self):

return 'pair(%r, %r)' % (self.x, self.y)

python物件導向(類和物件)

物件導向程式設計的2個非常重要的概念 類和物件 物件是物件導向程式設計的核心,在使用物件的過程中,為了將具有共同特徵和行為的一組物件抽象定義,提出了另外乙個新的概念 類 類就相當於製造飛機時的圖紙,用它來進行建立的飛機就相當於物件 賓士汽車 類 賓士smart 類 張三的那輛賓士smart 物件 狗...

python類物件和例項物件

類物件支援兩種操作 屬性引用和例項化。屬性引用 使用 python 中所有屬性引用所使用的標準語法 obj.name。有效的屬性名稱是類物件被建立時存在於類命名空間中的所有名稱。因此,如果類定義是這樣的 a example class i 12345 def f self return hello ...

Python 物件導向 類和物件

類 和 物件 是物件導向程式設計的 兩個 核心概念 類就相當於製造飛機時的圖紙,是乙個模板,是負責建立物件的 物件就相當於用圖紙製造的飛機 在開發過程中,應該先有類,再有物件 類中定義了什麼屬性和方法,物件中就有什麼屬性和方法,不可能多,也不可能少 在使用物件導向開發前,應該首先分析需求,確定一下,...