首页 > 代码库 > 17.Python自学之路:面对过程编程之继承

17.Python自学之路:面对过程编程之继承

继承

  面向对象编程 (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() #独有的方法

技术分享

17.Python自学之路:面对过程编程之继承