這一章我們通過一系列的問題及例子,一步步的來理解python中類與對(duì)象的方方面面,在章節(jié)里面也會(huì)穿插一些設(shè)計(jì)模式肩豁,調(diào)試技巧等箱锐,歡迎大家閱讀轉(zhuǎn)載,不足之處埋同,還請(qǐng)指出州叠。
如果你有一些經(jīng)驗(yàn),那么一定知道有時(shí)候我們?yōu)榱撕?jiǎn)化一些過程會(huì)重寫類的一些方法凶赁,我們現(xiàn)在要用python來進(jìn)行修改實(shí)例的字符串表示:
在進(jìn)行代碼實(shí)例之前咧栗,先來了解一下python中的一個(gè)函數(shù)eval()函數(shù),這個(gè)函數(shù)可以進(jìn)行字符串到實(shí)例的轉(zhuǎn)化虱肄,repr函數(shù)可以進(jìn)行實(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)
運(yùn)行結(jié)果
>>> p = Pair(3,4)
>>> p
Pair(3, 4)
>>> print(p)
(3, 4)
說明一下這個(gè)小例子的運(yùn)行原理:當(dāng)我們直接打印實(shí)例p時(shí),會(huì)默認(rèn)調(diào)用repr()函數(shù)進(jìn)行輸出浩峡,當(dāng)我們使用print打印的時(shí)候可岂,其也是默認(rèn)調(diào)用str()內(nèi)建函數(shù)進(jìn)行輸出的。
里面需要注意以下點(diǎn):
- repr函數(shù)返回需要用%r來表示應(yīng)該使用repr()輸出翰灾。