多态
继承
方法重写
#函数
#方法:类的内部函数为方法,其他单写的为函数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)
多态得的要素:继承和方法重写