91精产品自偷自偷综合官网版下载-91精产品自偷自偷综合下-91精品-91精品91久久久-91精品成人-91精品成人www

網(wǎng)站建設(shè)資訊

NEWS

網(wǎng)站建設(shè)資訊

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

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

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

1 __init__和__new__

__init__方法用來(lái)初始化類(lèi)實(shí)例;__new__方法用來(lái)創(chuàng)建類(lèi)實(shí)例。

主要的區(qū)別:

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

2).__new__通常用于控制生成一個(gè)新實(shí)例的過(guò)程。它是類(lèi)級(jí)別的方法。

__new__具體的作用:

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

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

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

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

注意點(diǎn):

關(guān)于__init__方法:第一個(gè)參數(shù)必須是self;無(wú)返回值

關(guān)于__new__方法:

1) 繼承自object的新式類(lèi)才有__new__

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

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

2 __del__方法

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

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

3 __str__和__repr__

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

定義__repr__的簡(jiǎn)單方法:定義了__str__之后,賦值給__repr__,如下:

__repr__ = __str__

4 屬性訪問(wèn)

__getattr__(self, name):當(dāng)用戶試圖獲取一個(gè)不存在的屬性(name)時(shí)的行為

__getattribute__(self, name):當(dāng)類(lèi)的屬性被訪問(wèn)時(shí)的行為

__setattr__(self, name, value):當(dāng)一個(gè)屬性被設(shè)置時(shí)的行為

__delattr__(self, name):當(dāng)一個(gè)屬性被刪除時(shí)的行為

死循環(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)

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

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

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

5 描述符:將某種特殊類(lèi)型的類(lèi)的實(shí)例指派給另一個(gè)類(lèi)的屬性

特殊類(lèi)型是指:

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

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

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

self:描述符類(lèi)本身的實(shí)例,instance:擁有者類(lèi)的實(shí)例,owner:擁有者,類(lèi)本身

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() #實(shí)例化
test.x
test.x = ‘X-man'
del test.x

python可以做什么

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

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

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


網(wǎng)站名稱:Python中有哪些常用的特殊方法-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://www.yuzhuanjia.cn/article/dijphp.html
主站蜘蛛池模板: 潮喷无码照片 | 91香蕉人成app | 一区二区三区国产精品午夜福利 | 午夜性色福利免费视频在线播 | 59pao成国产成视频永久免费 | 午夜欧美成人 | 国产a级毛 | a片强制妇女高潮成人片在线观看 | 韩国三日本三级中文字幕 | 午夜福利理论片高清在线观 | 国产白丝jk绑缚调教网站 | 91久久另类重口变态 | 国产不卡高清免费av | 国产av无码专区亚洲av软件 | 午夜福利视频理论 | 91精品国产免费久久蜜桃 | 动漫人妻h无码 | 91在线高清视频 | 97人妻精品全国免 | 91免费无码国产在线观看 | 动漫成年美女黄漫网站第28集 | 动漫美女爆羞羞动漫 | 一区二区三区观看 | 91精品国产乱码 | 91精品亭亭国产综合久久 | 一区二区在线播放视频 | 丰满少妇乱子伦精品无码专区 | 午夜毛片在线观看 | 91精品福利观看 | 打屁股gay | 国产白洁有声在线播放 | 97久久久国产精品 | 91高清视频国产片 | 国产99在线视频 | 91精品成人无码久久不卡 | 国产v片在线播放免 | 91精品国产综合久久久蜜臀 | 91欧美精品成人综合 | 91欧美亚洲国产五月天 | 丁香婷五月 | 日韩av免高清无码 |