class Base: pass class MyClass(Base): def run(self): print('MyClass run') class MyClass2(Base): def run(self): print('MyClass2 run') # 多态 m = MyClass() m2 = MyClass2() m.run() m2.run() print('') print(isinstance(m, MyClass)) print(issubclass(MyClass2, Base)) print('') def duck(d): d.run() class Man: def run(self): print('man run') class Monkey: def run(self): print('monkey run') duck(Man()) duck(Monkey())
构造函数, 重写构造函数:
#构造函数 class Base: def __init__(self): self.name = 'brando' base = Base() print (base.name) #通过MRO用父类的构造函数. class AA(Base): def __init__(self): super(AA, self).__init__() aa = AA() print (aa.name) #通过父类名称直接调用父类构造函数. class BB(Base): def __init__(self): Base.__init__(self) bb = BB() print (bb.name) #重写父类构造函数. class CC(Base): def __init__(self): self.name = 'CC' cc = CC() print (cc.name)