一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python類的專用方法實例分析

Python類的專用方法實例分析

2020-05-18 10:36腳本之家 Python

這篇文章主要介紹了Python類的專用方法,實例分析了__init__、__del__、__repr__等專用方法的應用技巧,需要的朋友可以參考下

本文實例講述了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程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 特级毛片免费视频观看 | 国产资源视频在线观看 | 国产亚洲欧美日韩综合综合二区 | 国精视频一区二区视频 | 国产亚洲欧美日韩综合综合二区 | 9久热久爱免费精品视频在线观看 | 国产精品原创永久在线观看 | 国产在线精品一区二区高清不卡 | 91资源站| 丁香五香天堂网 | 十六一下岁女子毛片免费 | 我把校花黑色蕾丝胸罩脱了 | 国产欧美精品专区一区二区 | 国产精品高清一区二区三区不卡 | 国产成人在线免费视频 | 波多野结衣在线中文字幕 | 国产亚洲精品高清在线 | 精品亚洲综合在线第一区 | 欧美日韩亚洲区久久综合 | xnxx18美女 | 九9热这里真品 | 精品视频一区二区三区 | 成人在线一区二区三区 | 调教女秘书 | 2018天天拍拍拍免费视频 | 顶级尤物极品女神福利视频 | 美女被视频 | 俄罗斯freeoo性另类 | 高h短篇辣肉各种姿势bl | 四虎精品永久免费 | 亚洲天天综合 | 2019韩国最新三级 | 护士的小嫩嫩好紧好舒服 | 国产一级黄色录像 | 美女狂揉尿口揉到失禁 | 天天做日日做天天添天天欢公交车 | 亚洲欧美日本在线观看 | 亚洲国产AV一区二区三区四区 | 日韩国产欧美一区二区三区 | 男人天堂资源网 | a级动漫|