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)