2018-09-12
Author: 楚格
IDE: Pycharm2018.02 Python 3.7
KeyWord : 继承
Explain:
class A:
def __init__(self):
print("A")
class B(A):
pass
# def __init__(self):
# print("B")
class C(A):
pass
# def __init__(self):
# print("C")
class D(B,C):
pass
# def __init__(self):
# print("D")
obj = D()
1------------------------------------------------------------------------------------------------------------------
--
# 定义学校 class School(object): print('class School(object):') def __init__(self,name,addr): self.name = name # 名称 self.addr = addr # 地址 self.students =[] self.staffs =[] # 注册方法 def Enroll(self,stu_obj): print("学生%s 注册办理"%stu_obj.name ) self.students.append(stu_obj) # def Hire(self,staff_obj): self.staffs.append(staff_obj) print("雇佣新员工%s" % staff_obj.name) class SchoolMember(object): print('class SchoolMember(object):') def __init__(self,name,age,sex): self.name = name self.age = age self.sex = sex def Tell(self): pass class Teacher(SchoolMember): print('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 of Teacher:%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 course [%s]" %(self.name,self.course)) class Student(SchoolMember): print('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 of Student:%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 Pay_Tuition(self,amount): print("%s has paid tution for $%s"% (self.name,amount) ) #================================================= school = School("科沃兹","楚格") t1 = Teacher("帕萨特", 2018,"MF",2000,"freeRTOS") t2 = Teacher("探索者", 2019,"MH",3000,"Ucos-II") s1 = Student("远景",25,"MF",1001,"python") s2 = Student("悦动",28,"MH",1002,"Linux") t1.Tell() s1.Tell() school.Hire(t1) school.Enroll(s1) school.Enroll(s2) print('school.students : ',school.students) print('school.staffs : ',school.staffs) school.staffs[0].teach() for stu in school.students: stu.Pay_Tuition(5000) print(stu) print(school.students)
--
RUN Result
--
--------------------------- class School(object): class SchoolMember(object): class Teacher(SchoolMember): class Student(SchoolMember): ---- info of Teacher:帕萨特 ---- Name :帕萨特 Age :2018 Sex :MF Salary :2000 Course :freeRTOS ---- info of Student:远景 ---- Name :远景 Age :25 Sex :MF Stu_id :1001 Grade :python 雇佣新员工帕萨特 学生远景 注册办理 学生悦动 注册办理 school.students : [<__main__.Student object at 0x0000000002995048>, <__main__.Student object at 0x0000000002995080>] school.staffs : [<__main__.Teacher object at 0x0000000002980F98>] 帕萨特 is teaching course [freeRTOS] 远景 has paid tution for $5000 <__main__.Student object at 0x0000000002995048> [<__main__.Student object at 0x0000000002995048>, <__main__.Student object at 0x0000000002995080>] 悦动 has paid tution for $5000 <__main__.Student object at 0x0000000002995080> [<__main__.Student object at 0x0000000002995048>, <__main__.Student object at 0x0000000002995080>] Process finished with exit code 0
---
额外多态
class Animal: def __init__(self, name): # Constructor of the class self.name = name def talk(self): # Abstract method, defined by convention only pass #raise NotImplementedError("Subclass must implement abstract method") @staticmethod def animal_talk(obj): obj.talk() class Cat(Animal): def talk(self): print('Meow!') class Dog(Animal): def talk(self): print('Woof! Woof!') d = Dog("科沃兹") #d.talk() c = Cat("科鲁兹") #c.talk() # # def animal_talk(obj): # obj.talk() Animal.animal_talk(c) Animal.animal_talk(d)