面向对象编程(10)继承相关函数
-
callable,是否可在后面加括号执行。
-
函数
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) ) # Falseclass Foo(object): def __call__(self, *args, **kwargs): pass obj = Foo() print( callable(obj) ) # True
所以当你以后在见到下面的情况时,首先就要想到handler可以是:函数、类、具有call方法的对象 这三种,到底具体是什么,需要根据代码的调用关系才能分析出来。
def do_something(handler): handler() -
-
super,按照mro继承关系向上找成员。
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 101class 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 -
type,获取一个对象的类型。
v1 = "武沛齐" result = type(v1) print(result) # <class 'str'>v2 = "武沛齐" print( type(v2) == str ) # True v3 = [11, 22, 33] # list(...) print( type(v3) == list ) # Trueclass Foo(object): pass v4 = Foo() print( type(v4) == Foo ) # True -
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子类的实例。 -
issubclass,判断类是否是某个类的子孙类。
class Top(object): pass class Base(Top): pass class Foo(Base): pass print(issubclass(Foo, Base)) # True print(issubclass(Foo, Top)) # True
浙公网安备 33010602011771号