繼承,繼承其它實例化樣本的屬性和方法,須要在聲明裏從新定義和使用python
class School(object): def __init__(self, name, addr): self.name = name self.addr = addr self.student = [] # 用於進行學生類的存儲 self.teacher = [] # 用於進行老師類的存儲 def enroll(self, stu_obj): print('招錄進來學生%s'%stu_obj.name) self.student.append(stu_obj) # 將學生類進行添加 def hire(self, staff_obj): print('招募老師%s'%staff_obj.name) self.teacher.append(staff_obj) # 將老師類進行添加 class Schoolmember(object): # 建立學校成員的父類 def __init__(self, name, age, sex): # 定義初始變量 self.name = name # 定義名字 self.age = age # 定義年齡 self.sex = sex # 定義性別 def teach(self): # 定義父類屬性 pass class Teacher(Schoolmember): # 定義老師屬性,繼承父類 def __init__(self, name, age, sex, salary, course): # 變量聲明 super(Teacher, self).__init__(name, age, sex) # 變量繼承 self.salary = salary self.course = course def tell(self): print(''' ---info---%s name %s age %s sex %s salary %s course %s '''%(self.name, self.name, self.age, self.sex, self.salary, self.course)) def teach(self): print('%s is teaching'%self.name) class Student(Schoolmember): def __init__(self, name, age, sex, stu_id, grade): super(Student, self).__init__(name, age, sex) self.stu_id = stu_id self.grade = grade def tell(self): print(''' ---info---%s name %s age %s sex %s stu_id %s grade %s ''' % (self.name, self.name, self.age, self.sex, self.stu_id, self.grade)) def paid_tution(self, money): print('%s has paid tution for $%s'%(self.name, money)) # 建立實例 school = School('oldboy', '沙河') s1 = Student('aaa', 22, 'M', '0001', 'python') s2 = Student('bbb', 23, 'F', '0002', 'linux') t1 = Teacher('ccc', 333, 'W', 10000, 'python') t2 = Teacher('ddd', 444, 'F', 20000, 'linux') school.enroll(s1) school.hire(t1) school.teacher[0].teach() for stu in school.student: stu.paid_tution(20000)
多態: 表示在父類裏定義一個函數,在子類裏均可以使用linux
class Animal(object): def __init__(self, name): # 初始化 self.name = name @staticmethod # 靜態變量裝飾器, 這樣不須要輸入self變量 def animal_talk(obj): obj.talk() class dog(Animal): # 定義dog類, 繼承Animal def __init__(self, name): super(dog, self).__init__(name) def talk(self): # 定義函數屬性 print('wowo') class cat(Animal): def __init__(self, name): super(cat, self).__init__(name) def talk(self): print('Meow') c = cat('aaa') # 實例化 d = dog('bbb') Animal.animal_talk(c) # 調用Animal裏面的屬性 Animal.animal_talk(d)