多态
继承
方法重写
#函数 #方法:类的内部函数为方法,其他单写的为函数class Programer(object): hobby='Play Computer' """docstring for Programer""" def __init__(self, name,age,weight): super(Programer, self).__init__() self.name = name #普通变量 self._age = age #私有变量,但可以外部访问 self.__weight = weight #私有变量,但可以通过_Programer.__weight来访问 @classmethod def get_hobby(self): return self.hobby #@classmethod直接Programer.get_hobby访问,类似于C的静态 @property def get_weight(self): #@property定义属性 return self.__weight def self_introductioon(self): #通过类的实例来访问 print ('My Name is %s \nI am %s years old\n' % (self.name,self._age))class BackendProgramer(Programer): """docstring for ClassName""" def __init__(self, name,age,weight,language): #类的继承 super(BackendProgramer, self).__init__(name,age,weight) self.language = language def self_introductioon(self): #类方法的重写 print ('My Name is %s \n My favorite language is %s' % (self.name,self.language))def introduce(programer): if isinstance(programer,Programer): #判断是不是该类型 多态 programer.self_introductioon()if __name__=='__main__': programer=Programer('lrf',25,80) print (dir(programer)) #类的属性,包括object之类的 print (programer.__dict__) #类的属性,内部属性 print (Programer.get_hobby()) print (programer.get_weight) programer.self_introductioon() backendProgramer=BackendProgramer('Tim',30,70,'Python') introduce(programer) introduce(backendProgramer)
python中可以使用继承然后重写父类方法来实现多态
polymorphism
多态的要素:
继承
方法重写
class Programer(object): hobby = 'Play Computer' def __init__(self, name, age, weight): self.name = name self._age = age self.__weight = weight def self_introduction(self): print 'My name is %s \nI am %s years old\n' % (self.name, self._age) class BackendProgramer(Programer): def __init__(self, name, age, weight, language): super(BackendProgramer, self).__init__(name, age, weight) self.language = language def self_introduction(self): print 'My name is %s \nMy favorite language is %s' % (self.name, self.language) def introduce(programer): if isinstance(programer, Programer): programer.self_introduction() if __name__ == '__main__': programer = Programer('Albert', 25, 80) backend_programer = BackendProgramer('Tim', 30, 70, 'Python') introduce(programer) introduce(backend_programer)
多态得的要素:继承和方法重写