目錄python
class OldboyPeople: """因爲學生和老師都是人,所以人都有姓名、年齡、性別""" school = 'oldboy' def __init__(self, name, age, gender): self.name = name self.age = age self.gender = gender class OldboyStudent(OldboyPeople): """因爲學生類沒有獨自的__init__()方法,所以不須要聲明繼承父類的__init__()方法,會自動繼承""" def choose_course(self): print('%s is choosing course' % self.name) class OldboyTeacher(OldboyPeople): """因爲老師類有獨自的__init__()方法,所以須要聲明繼承父類的__init__()""" def __init__(self, name, age, gender, level): OldboyPeople.__init__(self, name, age, gender) self.level = level # 派生 def score(self, stu_obj, num): print('%s is scoring' % self.name) stu_obj.score = num stu1 = OldboyStudent('tank', 18, 'male') tea1 = OldboyTeacher('nick', 18, 'male', 10)
print(stu1.__dict__)
{'name': 'tank', 'age': 18, 'gender': 'male'}
print(tea1.__dict__)
{'name': 'nick', 'age': 18, 'gender': 'male', 'level': 10}
嚴格以來繼承屬性查找關係函數
super()會獲得一個特殊的對象,該對象就是專門用來訪問父類中的屬性的(按照繼承的關係)code
super().__init__(不用爲self傳值)對象
super的完整用法是super(本身的類名,self),在python2中須要寫完整,而python3中能夠簡寫爲super()blog
class OldboyPeople: school = 'oldboy' def __init__(self, name, age, sex): self.name = name self.age = age self.sex = sex class OldboyStudent(OldboyPeople): def __init__(self, name, age, sex, stu_id): # OldboyPeople.__init__(self,name,age,sex) # super(OldboyStudent, self).__init__(name, age, sex) super().__init__(name, age, sex) self.stu_id = stu_id def choose_course(self): print('%s is choosing course' % self.name) stu1 = OldboyStudent('tank', 19, 'male', 1)
print(stu1.__dict__)
{'name': 'tank', 'age': 19, 'sex': 'male', 'stu_id': 1}