上述三個(gè)內(nèi)置函數(shù)在文章(Python進(jìn)階——面向?qū)ο笾蓡T)的方法和屬性中已經(jīng)詳細(xì)介紹使用,可以返回瀏覽,具體地址:https://www.jb51.net/article/215871.htm
函數(shù)
def func(): pass print( callable(func) ) # True
類
class Foo(object): pass print( callable(Foo) ) # True
類中具有__call__
方法的對象
class Foo(object): pass obj = Foo() print( callable(obj) ) # False
class Foo(object): def __call__(self, *args, **kwargs): pass obj = Foo() print( callable(obj) ) # True
所以當(dāng)你以后在見到下面的情況時(shí),首先就要想到handler可以是:函數(shù)、類、具有call方法的對象 這三種,到底具體是什么,需要根據(jù)代碼的調(diào)用關(guān)系才能分析出來。
def do_something(handler): handler()
class Top(object): def message(self, num): print("Top.message", num) class Base(Top): pass class Foo(Base): def message(self, num): print("Foo.message", num) super().message(num + 100) obj = Foo() obj.message(1) >>> Foo.message 1 >>> Top.message 101
class Base(object): def message(self, num): print("Base.message", num) super().message(1000) class Bar(object): def message(self, num): print("Bar.message", num) class Foo(Base, Bar): pass obj = Foo() obj.message(1) >>> Base.message 1 >>> Bar.message 1000
應(yīng)用場景
假設(shè)有一個(gè)類,他原來已實(shí)現(xiàn)了某些功能,但我們想在他的基礎(chǔ)上再擴(kuò)展點(diǎn)功能,重新寫一遍?比較麻煩,此時(shí)可以用super。
info = dict() # {} info['name'] = "華青水上" info["age"] = 18 value = info.get("age") print(value)
class MyDict(dict): def get(self, k): print("自定義功能") return super().get(k) info = MyDict() info['name'] = "華青水上" # __setitem__ info["age"] = 18 # __setitem__ print(info) value = info.get("age") print(value)
v1 = "華青水上" result = type(v1) print(result) # class 'str'>
v2 = "華青水上" print( type(v2) == str ) # True v3 = [11, 22, 33] # list(...) print( type(v3) == list ) # True
class Foo(object): pass v4 = Foo() print( type(v4) == Foo ) # True
class Top(object): pass class Base(Top): pass class Foo(Base): pass v1 = Foo() print( isinstance(v1, Foo) ) # True,對象v1是Foo類的實(shí)例 print( isinstance(v1, Base) ) # True,對象v1的Base子類的實(shí)例。 print( isinstance(v1, Top) ) # True,對象v1的Top子類的實(shí)例。
class Animal(object): def run(self): pass class Dog(Animal): pass class Cat(Animal): pass data_list = [ "alex", Dog(), Cat(), "root" ] for item in data_list: if type(item) == Cat: item.run() elif type(item) == Dog: item.run() else: pass for item in data_list: if isinstance(item, Animal): item.run() else: pass
class Top(object): pass class Base(Top): pass class Foo(Base): pass print(issubclass(Foo, Base)) # True print(issubclass(Foo, Top)) # True
至此,關(guān)于面向?qū)ο蟮囊恍﹥?nèi)置函數(shù)已經(jīng)總結(jié)完畢,如有不當(dāng)之處,歡迎指正!
到此這篇關(guān)于Python面向?qū)ο笾畠?nèi)置函數(shù)相關(guān)知識(shí)總結(jié)的文章就介紹到這了,更多相關(guān)Python內(nèi)置函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
標(biāo)簽:潮州 宜昌 湖北 佳木斯 珠海 盤錦 西寧 上饒
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python面向?qū)ο笾畠?nèi)置函數(shù)相關(guān)知識(shí)總結(jié)》,本文關(guān)鍵詞 Python,面向,對,象之,內(nèi)置,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。