#类调用 class.method(instance, args...)
class NextClass:
def printer(self, text): #可被类的所有实例所继承
self.message=text
print(self.message)
x=NextClass()
x.printer('instance call') #instance call
print(x.message) #instance call
NextClass.printer(x, 'class call') #class call
print(x.message) #class call
#调用超类构造函数
class Super:
def __init__(self, x):
print('super init : %s'% x)
class Sub(Super):
def __init__(self, x):
Super.__init__(self, x)
print('sub init : %s'% x)
s=Sub('test') #super init : test sub init : test
*******************************************************************************
#抽象超类部分行为默认是由子类所提供的,如Super类中的action方法,如果action方法没有在子类中定义,报错
class Super:
def method(self):
print('in Super.method')
def delegate(self):
self.action() #该方法由子类提供
class Inheritor(Super):
pass
class Replacer(Super):
def method(self):
print('in Replacer.method')
class Extender(Super):
def method(self):
print('starting Extender.method')
Super.method(self)
print('ending Extender.method')
class Provider(Super):
def action(self):
print('in Provider.action')
if __name__=='__main__':
for k in (Inheritor, Replacer, Extender):
print(k.__name__+'...')
k().method()
x=Provider()
x.delegate()