成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Python中有哪些常用的特殊方法-創(chuàng)新互聯(lián)

Python中有哪些常用的特殊方法?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

專注于為中小企業(yè)提供成都網(wǎng)站建設、網(wǎng)站設計服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)華陰免費做網(wǎng)站提供優(yōu)質(zhì)的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。

1 __init__和__new__

__init__方法用來初始化類實例;__new__方法用來創(chuàng)建類實例。

主要的區(qū)別:

1).__init__通常用于初始化一個新實例,控制初始化的過程,發(fā)生在類實例被創(chuàng)建完以后。它是實例級別的方法。

2).__new__通常用于控制生成一個新實例的過程。它是類級別的方法。

__new__具體的作用:

1) 繼承一些不可變的class時(比如int, str, tuple),提供一個自定義這些類的實例化過程的途徑

2) 實現(xiàn)自定義的metaclass

例子:實現(xiàn)永遠返回正數(shù)

class PositiveInteger(int): #繼承類int
  def __new__(cls, value):
    return super().__new__(cls, abs(value)) #返回父類的__new__方法
i = PositiveInteger(-3) #類實例化
print(i)
3

注意點:

關于__init__方法:第一個參數(shù)必須是self;無返回值

關于__new__方法:

1) 繼承自object的新式類才有__new__

2) __new__至少要有一個參數(shù)cls,代表要實例化的類,此參數(shù)在實例化時由Python解釋器自動提供

3) __new__必須要有返回值,返回實例化出來的實例(也就是__init__self),可以返回父類__new__出來的實例,或者直接是object的__new__出來的實例

2 __del__方法

當對象所有的引用都被刪除后觸發(fā)該方法,代碼如下:

class Testdel():
  def __del__(self):
    print("using __del__")
t = Testdel()
t1 = t
del t1
del t
using __del__

3 __str__和__repr__

__repr____str__這兩個方法都是用于顯示的,__str__是面向用戶的,而__repr__面向程序員

定義__repr__的簡單方法:定義了__str__之后,賦值給__repr__,如下:

__repr__ = __str__

4 屬性訪問

__getattr__(self, name):當用戶試圖獲取一個不存在的屬性(name)時的行為

__getattribute__(self, name):當類的屬性被訪問時的行為

__setattr__(self, name, value):當一個屬性被設置時的行為

__delattr__(self, name):當一個屬性被刪除時的行為

死循環(huán)陷阱:

class Rectangle:
  def __init__(self, width=0, height=0):
    self.width = width
    self.height = height
  def __setattr__(self, name, value):
    if name == ‘square':
      self.width = value
      self.height = value
    else:
      self.name = value
  def getArea(self):
    return self.width * self.height
r = Rectangle(3,4)

實例化r = Rectangle(3, 4)就會出現(xiàn)死循環(huán),因為在__init__里面出現(xiàn)了設置屬性值,跳到__setattr__里面e的self.name = value這一句,也就是繼續(xù)賦值操作self.width = width,所以進入死循環(huán)。解決方法:

1) else子句改為:super().__setattr__(name, value)

2) else子句改為:self.__dict__[name] = value

5 描述符:將某種特殊類型的類的實例指派給另一個類的屬性

特殊類型是指:

__get__(self, instance, owner):訪問屬性,返回屬性的值

__set__(self, instance, value):用于設置屬性,不返回任何內(nèi)容

__delete__(self, instance):刪除屬性,不返回任何內(nèi)容

self:描述符類本身的實例,instance:擁有者類的實例,owner:擁有者,類本身

class MyDecriptor:
  def __get__(self, instance, owner): #理解self instance owner的含義
    print(‘getting...', self, instance, owner)
  def __set__(self, instance, value):
    print(‘setting…',self, instance,value)
  def __delete__(self, instance):
    print(‘deleting…',self, instance)
class Test:
  x = MyDecriptor()
test = Test() #實例化
test.x
test.x = ‘X-man'
del test.x

python可以做什么

Python是一種編程語言,內(nèi)置了許多有效的工具,Python幾乎無所不能,該語言通俗易懂、容易入門、功能強大,在許多領域中都有廣泛的應用,例如最熱門的大數(shù)據(jù)分析,人工智能,Web開發(fā)等。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創(chuàng)新互聯(lián)成都網(wǎng)站設計公司行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)成都網(wǎng)站設計公司的支持。

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、網(wǎng)站設計器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

分享標題:Python中有哪些常用的特殊方法-創(chuàng)新互聯(lián)
當前鏈接:http://jinyejixie.com/article48/dijphp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設、網(wǎng)站收錄網(wǎng)站排名、網(wǎng)站設計、移動網(wǎng)站建設、網(wǎng)站設計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設計
镇雄县| 东光县| 久治县| 乡宁县| 青海省| 五莲县| 米林县| 连州市| 原阳县| 朝阳区| 开封市| 曲靖市| 清原| 武邑县| 郸城县| 江华| 彰化市| 娄烦县| 武胜县| 仁怀市| 朝阳市| 梅河口市| 邹城市| 顺义区| 韶山市| 眉山市| 浮山县| 大埔区| 延吉市| 即墨市| 勃利县| 丰台区| 阜宁县| 凉山| 古交市| 剑川县| 和政县| 大渡口区| 闸北区| 和田市| 靖州|