真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python面向?qū)ο笾瓷錂C(jī)制怎么使用-創(chuàng)新互聯(lián)

小編給大家分享一下Python面向?qū)ο笾瓷錂C(jī)制怎么使用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到建昌網(wǎng)站設(shè)計(jì)與建昌網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:做網(wǎng)站、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、空間域名、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋建昌地區(qū)。

反射:程序可以訪問(wèn),檢測(cè)和修改它本身狀態(tài)或行為的一種能力(自?。?/p>

下面就介紹四種實(shí)現(xiàn)自省的函數(shù),適用于類(lèi)和對(duì)象

1. 判斷object中有沒(méi)有一個(gè)name字符串對(duì)應(yīng)的屬性或者方法

hasattr(object,name)

2. 獲取object中name字符串對(duì)應(yīng)的屬性值或者方法地址,其中default參數(shù)的作用是,在找不到屬性的時(shí)候,給予調(diào)用者的提示信息。

getattr(object,name,default= None)

3. 將object中name字符串對(duì)應(yīng)的屬性值設(shè)置為value,這個(gè)屬性可以是新增的屬性。

setattr(object,name,value)

4. 刪除object中name字符串對(duì)應(yīng)的屬性。

delattr(object,name)

四個(gè)方法的演示

class BlackMedium:
  feture = 'Ugly'
  def __init__(self,name,addr):
    self.name = name
    self.addr = addr
  def sell_house(self):
    print('%s賣(mài)房子'%(self.name))
  def rent_house(self):
    print('%s租房子'%(self.name))
b1 = BlackMedium('萬(wàn)成置地','天露園')
#檢測(cè)是否含有某個(gè)屬性
print(hasattr(b1,'name'))
print(hasattr(b1,'sell_house'))
#獲取屬性
temp = getattr(b1,'name')
print(temp)
func = getattr(b1,'rent_house')
func()
#getattr(b1,'aaaaaa') 獲取不存在的屬性,就會(huì)報(bào)錯(cuò)。
print(getattr(b1,'aaaaa','該屬性不存在'))
#設(shè)置數(shù)據(jù)屬性和方法屬性
setattr(b1,'sb',True)
setattr(b1,'show_name',lambda self:self.name + 'sb')
print(b1.__dict__)
print(b1.show_name(b1))
#刪除屬性
delattr(b1,'addr')
delattr(b1,'show_name')
#刪除不存在的屬性,報(bào)錯(cuò)
delattr(b1,'show_name123')
print(b1.__dict__)

運(yùn)行結(jié)果:

True
True
萬(wàn)成置地
萬(wàn)成置地租房子
該屬性不存在
{'sb': True, 'show_name': at 0x01BCA7F0>, 'name': '\xe4\xb8\x87\xe6\x88\x90\xe7\xbd\xae\xe5\x9c\xb0', 'addr': '\xe5\xa4\xa9\xe9\x9c\xb2\xe5\x9b\xad'}
萬(wàn)成置地sb
Traceback (most recent call last):
  File "C:\py\jb51PyDemo\src\Demo\test.py", line 37, in
    delattr(b1,'show_name123')
AttributeError: BlackMedium instance has no attribute 'show_name123'

為什么用反射呢?

舉例:兩個(gè)程序員A,B,A在寫(xiě)程序用到B寫(xiě)的類(lèi),但是B還沒(méi)有完成這個(gè)類(lèi)的編寫(xiě)。此時(shí)就可以用到反射,完成A自己想要編寫(xiě)的代碼。并且不影響B(tài)的后期編碼。

好處:可以事先定義好接口,接口只有在被完成時(shí),才會(huì)真正執(zhí)行,實(shí)現(xiàn)了即插即用,也就是一種后期綁定,即先定義接口,后期在實(shí)現(xiàn)接口的功能。

B還沒(méi)有實(shí)現(xiàn)的全部功能

class FtpClient:
   #ftp客戶(hù)端,但是還沒(méi)有實(shí)現(xiàn)功能
   def __init__(self,addr):
     print('正在連接服務(wù)器[%s]'%(self.addr))
     self.addr = addr

A后期的代碼編寫(xiě)

from module import FtpClient
f1 = FtpClient('198.1.1.1')
#在編寫(xiě)某個(gè)方法前,先判斷該方法是否存在,存在就可以直接調(diào)用,不存在就要編寫(xiě)。
if hasattr(f1,'get'):
  func_get = getattr(f1,'get')
  func_get()
else
  print('-----》不存在這個(gè)方法')
  print('處理其他的邏輯')

以上是“Python面向?qū)ο笾瓷錂C(jī)制怎么使用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道!

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


文章標(biāo)題:Python面向?qū)ο笾瓷錂C(jī)制怎么使用-創(chuàng)新互聯(lián)
分享路徑:http://weahome.cn/article/dppjpi.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部