標籤:size -- 派生 複用 ring must str _id integer
繼承是為代碼複用和設計複用而設計的
在繼承關係中,已有的、設計好的類稱為父類或基類,新設計的類為子類或衍生類別
衍生類別可以繼承父類的公有成員,但不能繼承其私人成員
如果需要在衍生類別中調用基類的方法,可以使用內建函數super()或者通過 基類名.方法名() 實現
---------------------------------------------------------------------------
python支援多繼承,如果父類中有相同的方法名,而在子類中使用時沒有指定父類名,
則python解譯器將從左至右按順序搜尋
# 定義基類class Person(object): # 必須以object為基類 def __init__(self,name=‘‘,age=20,sex=‘man‘): self.setName(name) self.setAge(age) self.setSex(sex) def setName(self,name): if not isinstance(name,str): print(‘name must be string.‘) return self.__name=name def setAge(self,age): if not isinstance(age,int): print(‘age must be integer.‘) return self.__age=age def setSex(self,sex): if sex != ‘man‘ and sex != ‘woman‘: print(‘sex must be "man" or "woman".‘) return self.__sex = sex def show(self): print(‘name:‘,self.__name) print(‘age:‘,self.__age) print(‘sex:‘,self.__sex)# 定義衍生類別,並調用基類方法class Teacher(Person): def __init__(self,name=‘‘,age=30,sex=‘man‘,id=215): super(Teacher,self).__init__(name,age,sex) self.setId(id) def setId(self,id): if not isinstance(id,int): print(‘id must bu integer.‘) return self.__id = id def show(self): super(Teacher,self).show() # 調用基類的方法 print() if __name__==‘__main__‘: zhangle = Person(‘zhang le‘,19,‘man‘) zhangle.show() limu = Teacher(‘li mu‘,32,‘man‘,233) limu.show() limu.setId(666) limu.show()
out:
name: zhang leage: 19sex: manname: li muage: 32sex: manname: li muage: 32sex: man
python程式設計——物件導向程式設計:繼承