一.super().method()
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):passobj = Foo()obj.message(1)>>> Base.message 1>>> Bar.message 1000
应用场景:
可以把原来类的方法继承之后,添加出来新的方法
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)
理解:
1.直接使用
super(class,obj).abc(),把这个类屏蔽,在这个class的父类中去查找abc()方法
2.在class中使用,不需要加参数,把本身这个类屏蔽,在这个class的父类中去查找abc()方法
3.super(class).abc(),在父类中查找abc()这个类方法
二.type()函数
v2 = "武沛齐"print( type(v2) == str ) # Truev3 = [11, 22, 33] # list(...)print( type(v3) == list ) # True
class Foo(object):passv4 = Foo()print( type(v4) == Foo ) # True
备注:
type(obj)返回的是这个obj的类对象
type(class)返回的是type这个类对称
举例:type(123) .str(456)
可以对 类.方法(对象) 对对象进行使用 或者 对象.方法
三.isinstance 判断某个对象是否是某个类的实例
class Top(object):passclass Base(Top):passclass Foo(Base):passv1 = 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):passclass Base(Top):passclass Foo(Base):passprint(issubclass(Foo, Base)) # Trueprint(issubclass(Foo, Top)) # True
