Python內(nèi)置函數(shù)
1. classmethod、staticmethod、property 。
上述三個內(nèi)置函數(shù)在文章(Python進階——面向?qū)ο笾蓡T)的方法和屬性中已經(jīng)詳細介紹使用,可以返回瀏覽,具體地址:https://www.jb51.net/article/215871.htm
2. callable,是否可在后面加括號執(zhí)行。
函數(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
所以當你以后在見到下面的情況時,首先就要想到handler可以是:函數(shù)、類、具有call方法的對象 這三種,到底具體是什么,需要根據(jù)代碼的調(diào)用關(guān)系才能分析出來。
def do_something(handler):
handler()
3. super,按照mro繼承關(guān)系向上找成員。
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è)有一個類,他原來已實現(xiàn)了某些功能,但我們想在他的基礎(chǔ)上再擴展點功能,重新寫一遍?比較麻煩,此時可以用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)
4. type,獲取一個對象的類型。
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
5. isinstance,判斷對象是否是某個類或其子類的實例。
class Top(object):
pass
class Base(Top):
pass
class Foo(Base):
pass
v1 = Foo()
print( isinstance(v1, Foo) ) # True,對象v1是Foo類的實例
print( isinstance(v1, Base) ) # True,對象v1的Base子類的實例。
print( isinstance(v1, Top) ) # True,對象v1的Top子類的實例。
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
6. issubclass,判斷類是否是某個類的子孫類。
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é)完畢,如有不當之處,歡迎指正!
到此這篇關(guān)于Python面向?qū)ο笾畠?nèi)置函數(shù)相關(guān)知識總結(jié)的文章就介紹到這了,更多相關(guān)Python內(nèi)置函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- Python初學(xué)者必須掌握的25個內(nèi)置函數(shù)詳解
- 10個使用Python必須知道的內(nèi)置函數(shù)
- Python函數(shù)的作用域及內(nèi)置函數(shù)詳解
- python內(nèi)置函數(shù)之slice案例詳解
- Python 內(nèi)置函數(shù)速查表一覽
- python高級內(nèi)置函數(shù)用法實例