欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python類的專用方法實例分析

系統 1605 0

本文實例講述了Python類的專用方法。分享給大家供大家參考。具體分析如下:

Python 類可以定義專用方法,專用方法是在特殊情況下或當使用特別語法時由 Python 替你調用的,而不是在代碼中直接調用(象普通的方法那樣)。

1. __init__

類似于構造函數

復制代碼 代碼如下:
#!/usr/local/bin/python
class Study:
??????? def __init__(self,name=None):
??????????????? self.name = name
??????? def say(self):
??????????????? print self.name
study = Study("Badboy")
study.say()

2. __del__

類似于析構函數

復制代碼 代碼如下:
#!/usr/local/bin/python
class Study:
??????? def __init__(self,name=None):
??????????????? self.name = name
??????? def __del__(self):
??????????????? print "Iamaway,baby!"
??????? def say(self):
??????????????? print self.name
study = Study("zhuzhengjun")
study.say()

3. __repr__

使用repr(obj)的時候,會自動調用__repr__函數,該函數返回對象字符串表達式,
用于重建對象,如果eval_r(repr(obj))會得到一個對象的拷貝。

復制代碼 代碼如下:
#!/usr/local/bin/python
class Study:
??????? def __init__(self,name=None):
??????????????? self.name = name
??????? def __del__(self):
??????????????? print "Iamaway,baby!"
??????? def say(self):
??????????????? print self.name
??????? def __repr__(self):
??????????????? return "Study('jacky')"
study = Study("zhuzhengjun")
study.say()
print type(repr(Study("zhuzhengjun"))) # str
print type(eval_r(repr(Study("zhuzhengjun")))) # instance
study = eval_r(repr(Study("zhuzhengjun")))
study.say()

4. __str__

Python能用print語句輸出內建數據類型。有時,程序員希望定義一個類,要求它的對象也能用print語句輸出。Python類可定義特殊方法__str__,為類的對象提供一個不正式的字符串表示。如果類的客戶程序包含以下語句:

復制代碼 代碼如下:
print objectOfClass

那么Python會調用對象的__str__方法,并輸出那個方法所返回的字符串。
復制代碼 代碼如下:
#!/usr/local/bin/python
class PhoneNumber:
??????? def __init__(self,number):
???????????????? self.areaCode=number[1:4]
???????????????? self.exchange=number[6:9]
???????????????? self.line=number[10:14]
??????? def __str__(self):
??????????????? return "(%s) %s-%s"%(self.areaCode,self.exchange,self.line)
def test():
???????? newNumber=raw_input("Enter phone number in the form. (123) 456-7890: \n")
???????? phone=PhoneNumber(newNumber)
???????? print "The phone number is:"
???????? print phone
if__name__=="__main__":
???????? test()

方法__init__接收一個形如"(xxx) xxx-xxxx"的字符串。字符串中的每個x都是電話號碼的一個位數。方法對字符串進行分解,并將電話號碼的不同部分作為屬性存儲。
方法__str__是一個特殊方法,它構造并返回PhoneNumber類的一個對象的字符串表示。解析器一旦遇到如下語句:

復制代碼 代碼如下:
print phone

就會執行以下語句:
復制代碼 代碼如下:
print phone.__str__()

程序如果將PhoneNumber對象傳給內建函數str(如str(phone)),或者為PhoneNumber對象使用字符串格式化運算符%(例如"%s"%phone),Python也會調用__str__方法。
5. __cmp __

比較運算符,0:等于 1:大于 -1:小于

復制代碼 代碼如下:
class Study:
???? def __cmp__(self, other):
???????? if other > 0 :
???????????? return 1
???????? elif other < 0:
???????????? return - 1
???????? else:
???????????? return 0
study = Study()
if study > -10:print 'ok1'
if study < -10:print 'ok2'
if study == 0:print 'ok3'

打印:ok2 ok3

說明:在對類進行比較時,python自動調用__cmp__方法,如-10 < 0 返回 -1,也就是說study 應該小與 -10,估打印ok2

6. __getitem__

__getitem__ 專用方法很簡單。象普通的方法 clear,keys 和 values 一樣,它只是重定向到字典,返回字典的值。

復制代碼 代碼如下:
class Zoo:
???? def __getitem__(self, key):
???????? if key == 'dog':return 'dog'
???????? elif key == 'pig':return? 'pig'
???????? elif key == 'wolf':return 'wolf'
???????? else:return 'unknown'
zoo = Zoo()
print zoo['dog']
print zoo['pig']
print zoo['wolf']

打印:
dog pig wolf

7. __setitem__

__setitem__ 簡單地重定向到真正的字典 self.data ,讓它來進行工作。

復制代碼 代碼如下:
class Zoo:
???? def __setitem__(self, key, value):
???????? print 'key=%s,value=%s' % (key, value)
zoo = Zoo()
zoo['a'] = 'a'
zoo['b'] = 'b'
zoo['c'] = 'c'

打印:
key=a,value=a
key=b,value=b
key=c,value=c

8. __delitem__

__delitem__ 在調用 del instance[key] 時調用,你可能記得它作為從字典中刪除單個元素的方法。當你在類實例中使用 del 時,Python 替你調用 __delitem__ 專用方法。

復制代碼 代碼如下:
class A:
???? def __delitem__(self, key):
???????? print 'delete item:%s' %key
a = A()
del a['key']

希望本文所述對大家的Python程序設計有所幫助。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日韩欧美在线视频 | 麻豆md国产在线观看 | 综合一区二区三区 | 亚洲国产午夜电影在线入口 | 久久久久久国产精品视频 | 日韩欧美一区二区三区在线 | 国产欧美日韩精品a在线观看高清 | 亚洲一区二区三区在线影院 | 一区二区三区四区国产精品视频 | 一 级做人爱全视频在线看 久久综合九色综合网站 | 日日摸夜夜摸狠狠摸日日碰夜夜做 | 91成人在线视频 | 国产资源在线看 | 涩涩伊人 | 一级片在线免费观看视频 | 亚洲涩综合 | 偷拍在线观看视频在线观看地址 | 一区二区三区视频 | 欧美a在线| 久久久久久久免费看 | 免费毛片在线播放 | 日韩精品真人荷官无码 | 久久精品免费视频观看 | 欧美 亚洲 一区 | 日韩视频专区 | 久久99深爱久久99精品 | 国产成人午夜精品5599 | 美日韩一区二区 | 在线不卡一区 | 日韩中文一区 | 日本aⅴ在线 | 亚洲午夜久久久久中文字幕久 | 夭天曰天天躁天天摸在线观看 | 边摸边吃奶边做激情叫床 | 奇米在线播放 | 精品免费av| 成人av网站免费观看 | 免费视频91 | 亚洲一区在线免费 | 韩国成人毛片aaa黄 人人天天操 | 国产a久久精品一区二区三区 |