继承
面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
通过继承创建的新类称为“子类”或“派生类”。
被继承的类称为“基类”、“父类”或“超类”。
继承的过程,就是从一般到特殊的过程。
抽象类仅定义将由子类创建的一般属性和方法。
OO开发范式大致为:划分对象→抽象类→将类组织成为层次化结构(继承和合成) →用类与实例进行设计和实现几个阶段。
1 class SchoolMember(object): 2 member_nums = 0 #类变量 3 def __init__(self, name, age, gender): 4 self.name = name 5 self.age = age 6 self.gender = gender 7 self.enroll() 8 def enroll(self): 9 if __name__ == ‘__main__‘: 10 SchoolMember.member_nums += 1 #此处谨慎的不能写成self.member_nums += 1,这相当于在每个初始化的实例中新建了一个变量member_nums 11 print("\033[32;1m第 [%s] 个 SchoolMember [%s] is enrolled!\033[0m" % (SchoolMember.member_nums, self.name)) 12 def tell(self): 13 print("Hello,my name is [%s]" % self.name) 14 15 16 class Teacher(SchoolMember): 17 def __init__(self, name, age, gender, course, salary): # 若不写,就默认继承了父类的init 18 ‘‘‘先重写,再继承‘‘‘ 19 super(Teacher, self).__init__(name, age, gender) # 继承 20 self.course = course 21 self.salary = salary 22 23 def teaching(self): 24 print("Teacher [%s] is teaching [%s]" % (self.name, self.course)) 25 26 class Student(SchoolMember): 27 def __init__(self, name, age, gender, course, tuition): 28 super(Student, self).__init__(name, age, gender) 29 self.course = course 30 self.tuition = tuition 31 32 def pay_tuition(self): 33 print("cao ,student [%s] paying tuition [%s]" % (self.name, self.tuition)) 34 35 36 t1 = Teacher("Alex", 22, ‘F‘, ‘PY‘, 1000) 37 t2 = Teacher("Tenglan", 25, ‘N/A‘, ‘PY‘, 900) 38 39 s1 = Student("SanJiang", 24, "F", "py", 15000) 40 s2 = Student("BaoAn", 23, "F", "py", 5000) 41 42 t1.tell() #父类的方法 43 t1.teaching() #独有的方法 44 s1.tell() #父类的方法 45 s1.pay_tuition() #独有的方法
时间: 2024-10-11 18:23:48