這一章我們通過一系列的問題及例子,一步步的來理解python中類與對象的方方面面,在章節(jié)里面也會穿插一些設(shè)計模式,調(diào)試技巧等,歡迎大家閱讀轉(zhuǎn)載,不足之處,還請指出。
如果你有一些經(jīng)驗,那么一定知道有時候我們?yōu)榱撕喕恍┻^程會重寫類的一些方法,我們現(xiàn)在要用python來進行修改實例的字符串表示:
在進行代碼實例之前,先來了解一下python中的一個函數(shù)eval()函數(shù),這個函數(shù)可以進行字符串到實例的轉(zhuǎn)化,repr函數(shù)可以進行實例到字符串的轉(zhuǎn)換,可以這樣理解:eval(repr(x)) == x
class Pair:
def __init__(self, x, y):
self.x = x
self.y = y
def __repr__(self):
return 'Pair(%r, %r)' % (self.x, self.y)
def __str__(self):
return '(%s, %s)'.format(self.x, self.y)
運行結(jié)果
>>> p = Pair(3,4)
>>> p
Pair(3, 4)
>>> print(p)
(3, 4)
說明一下這個小例子的運行原理:當(dāng)我們直接打印實例p時,會默認調(diào)用repr()函數(shù)進行輸出,當(dāng)我們使用print打印的時候,其也是默認調(diào)用str()內(nèi)建函數(shù)進行輸出的。
里面需要注意以下點:
- repr函數(shù)返回需要用%r來表示應(yīng)該使用repr()輸出。