麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Python > 正文

python中實現(xiàn)定制類的特殊方法總結(jié)

2020-02-23 05:52:03
字體:
供稿:網(wǎng)友

看到類似__slots__這種形如__xxx__的變量或者函數(shù)名就要注意,這些在Python中是有特殊用途的。

__slots__我們已經(jīng)知道怎么用了,__len__()方法我們也知道是為了能讓class作用于len()函數(shù)。

除此之外,Python的class中還有許多這樣有特殊用途的函數(shù),可以幫助我們定制類。

__str__

我們先定義一個Student類,打印一個實例:
代碼如下:
>>> class Student(object):
...     def __init__(self, name):
...         self.name = name
...
>>> print Student('Michael')
<__main__.Student object at 0x109afb190>

打印出一堆<__main__.Student object at 0x109afb190>,不好看。

怎么才能打印得好看呢?只需要定義好__str__()方法,返回一個好看的字符串就可以了:
代碼如下:
>>> class Student(object):
...     def __init__(self, name):
...         self.name = name
...     def __str__(self):
...         return 'Student object (name: %s)' % self.name
...
>>> print Student('Michael')
Student object (name: Michael)

這樣打印出來的實例,不但好看,而且容易看出實例內(nèi)部重要的數(shù)據(jù)。

但是細(xì)心的朋友會發(fā)現(xiàn)直接敲變量不用print,打印出來的實例還是不好看:
代碼如下:
>>> s = Student('Michael')
>>> s
<__main__.Student object at 0x109afb310>

這是因為直接顯示變量調(diào)用的不是__str__(),而是__repr__(),兩者的區(qū)別是__str__()返回用戶看到的字符串,而__repr__()返回程序開發(fā)者看到的字符串,也就是說,__repr__()是為調(diào)試服務(wù)的。

解決辦法是再定義一個__repr__()。但是通常__str__()和__repr__()代碼都是一樣的,所以,有個偷懶的寫法:
代碼如下:
class Student(object):
    def __init__(self, name):
        self.name = name
    def __str__(self):
        return 'Student object (name=%s)' % self.name
    __repr__ = __str__

__iter__

如果一個類想被用于for ... in循環(huán),類似list或tuple那樣,就必須實現(xiàn)一個__iter__()方法,該方法返回一個迭代對象,然后,Python的for循環(huán)就會不斷調(diào)用該迭代對象的next()方法拿到循環(huán)的下一個值,直到遇到StopIteration錯誤時退出循環(huán)。

我們以斐波那契數(shù)列為例,寫一個Fib類,可以作用于for循環(huán):
代碼如下:
class Fib(object):
    def __init__(self):
        self.a, self.b = 0, 1 # 初始化兩個計數(shù)器a,b

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 日韩黄色片免费看 | xxnxx中国18 | 欧美电影在线观看 | www成人在线观看 | 欧美在线观看视频一区二区 | 水多视频在线观看 | 成人aaaaa片毛片按摩 | 国产伦精品一区二区三区 | 91看片淫黄大片欧美看国产片 | 欧美一级特级 | 欧美一级做一a做片性视频 日韩黄色片免费看 | 国产一区免费观看 | 高清中文字幕在线 | 激情97| 久国久产久精永久网页 | 最污网站 | 2017亚洲男人天堂 | 日韩黄色免费电影 | 亚洲成人福利在线观看 | 久久艹国产精品 | 国产精品视频免费网站 | 国产精品成人一区二区三区吃奶 | 成人免费av在线播放 | 久久久久久久高清 | 国产一区精品在线观看 | 欧美成人综合视频 | 宅男噜噜噜66一区二区 | 国产小视频在线观看 | 欧美亚洲另类在线 | 成年人在线视频 | 欧美日在线观看 | 欧美a级在线免费观看 | 91 久久| 久久撸视频 | 羞羞草视频 | 在线播放黄色片 | 91 视频网站 | 黄色网址你懂的 | 午夜爽爽爽男女免费观看hd | 精品黑人一区二区三区国语馆 | 久草中文网 |