1.約束:子類中必須繼承父類的方法,不然會報錯。
class Base(object):
def send(self):
raise NotImplementedError('子類中必須實現(xiàn)send方法')
class Foo(Base):
"""如果不寫send方法,會返回錯誤信息"""
def send(self):
print('234')
obj = Foo()
obj.send()
2.反射(反射就是把字符串反射成內(nèi)存對象)
反射中四個重要的方法
getattr 獲取指定字符串名稱的對象屬性
setattr 為對象設(shè)置一個對象
hasattr 判斷對象是否有對應(yīng)的對象(字符串)
delattr 刪除指定屬性
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author: rex.cheny
# E-mail: rex.cheny@outlook.com
class TestObj(object):
def __init__(self, name, age):
self.name = name
self.age = age
def displayName(self):
print("displayName方法執(zhí)行,打印姓名:", self.name)
def AAA(self):
print("I am AAA.")
def main():
to = TestObj("Tom", 23)
# 查看 to 實例里面是否有 name 這個屬性
if hasattr(to, "name"):
print("實例 to 中有 name 屬性。")
print(getattr(to, "name"))
else:
print("實例 to 中沒有 name 屬性。")
if hasattr(to, "displayName"):
print("實例 to 中有 displayName 屬性。")
getattr(to, "displayName")()
else:
print("實例 to 中沒有 displayName 屬性。")
if hasattr(to, "AAA"):
print("實例 to 中有 AAA 屬性。")
getattr(to, "AAA")()
else:鄭州婦科醫(yī)院 http://www.zyfuke.com/
print("實例 to 中沒有 AAA 屬性,將會設(shè)置。")
setattr(to, "AAA", AAA) # 參數(shù):實例、方法名稱、具體方法 相當(dāng)于 to.AAA = AAA 第一個AAA是函數(shù)在實例中的名稱, 第二個AAA是把哪個函數(shù)放進去,兩者只是恰好這里名稱一樣
# to.AAA(to) # 這里一定要主動傳遞一個實例進去,因為它不會自動裝配self
getattr(to, "AAA")(to)
if __name__ == '__main__':
main()
舉個例子
class TestObj(object):
def __init__(self, name):
self.name = name
def displayname(self):
print(self.name)
def main():
to = TestObj(name="Tom")
cmd = input("輸入:")
if hasattr(to, cmd):
pass
else:
setattr(to, cmd, displayname)
func = getattr(to, cmd)
func(to)
if __name__ == '__main__':
main()
以字符串的形式使用模塊的方法
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author: rex.cheny
# E-mail: rex.cheny@outlook.com
temp = "re" # 要引入的模塊
func = "compile" # 要使用的方法
model = __import__(temp) # 導(dǎo)入模塊
function = getattr(model, func) # 找到模塊中的屬性
def main():
txt = "hj123uo"
pattern = function(r"[0-9]+") # 這里執(zhí)行funcation()就等于執(zhí)行re.compile()函數(shù)
print(model.search(pattern, txt).group())
if __name__ == '__main__':
main()
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)頁標(biāo)題:python的約束、反射-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://jinyejixie.com/article38/digpsp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、手機網(wǎng)站建設(shè)、用戶體驗、域名注冊、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容