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() #独有的方法

时间: 2024-10-11 18:23:48

17.Python自学之路:面对过程编程之继承的相关文章

**.Python自学之路:网络编程

socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. 1.首先来看一下简易版的客户端与服务器的搭建 客户端 #!/usr/bin/env python # -*- coding:utf-8 -*- import socket ip_port = ('127.0.0.1',9999) #测试地址与端口 sk = socket.socket() #生成句柄 sk.conne

javascript面对对象编程 之继承

上一篇博客中为大家介绍了javascript面向对象编程原则的封装,今天为大家介绍继承,在javascript中没有类的概念,所有不能像c#,java语言那样,直接的用类去继承类.比如现在有比如,现在有一个"动物"对象的构造函数. function Animal(){ this.species = "动物"; } 还有一个"猫"对象的构造函数. function Cat(name,color){ this.name = name; this.co

python接口自动化九--面对对象编程二,搭建测试环境,多线程与多进程

1.面对对象编程 1.1 基本概念 实例方法:在类里面定义的函数都是实例方法,函数内有self变量 类方法: 不可以实例化,直接用类名调用 类方法可以使用类变量,cls.xxx 实例可以通过self.xx使用类方法 类方法里面不能使用实例方法和实例变量 静态方法: 定义在类里的普通函数 用不了实例方法,实例变量,类方法,类变量 不需要实例化,直接用类名调用 ? 属性方法: 是实例方法 不能有入参 用它的时候,直接m.func,把它当做变量来使用,后面不需要加括号 它是获取函数的返回值 析构函数:

我的Python自学之路一:Python学习路线

作为以为小白,在学习Python的时候,必然会走一定的弯路,有人在弯路上走丢了,有人走出了弯路.我就是属于还未走出弯路的同学,所以我想谈谈我的Python学习之路. 我进入这个坑是因为这个最近几年比较火,想必大家都知道吧,我开始学习Python时,先学习的是linux基本命令,作为小白,在装linux时出现许多问题,小白安装可以看看http://blog.csdn.net/u013142781/article/details/50529030这个教程,可能能帮助你成功安装. 其次,学习linux

##.Python自学之路:反射(非常重要的编程思路)

反射的意义:通过字符串获取一个类的方法的内存地址,并调用该方法. 格式:if hasattr(self, 'anAttr') func = getattr(self, 'anAttr')  #获取内存地址 func()                                    #调用该方法,等价于anAttr() setattr(x, 'y', v) delattr(x, 'y') 看下面这个例子 版本一:效率低下,若类WebServer中的方法多个上百,那么主函数中的if语句就要判

Python自学之路【第一篇】:Python简介和入门

Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 最新的TIOBE排行榜,Python赶超PHP占据第五!!! 由上图可见,Python整体呈上升趋势,反映出Python应用越来越广泛并且也逐渐得到业内的认可!!! Python可以应用于众多领域,如:数据分析.组件集成.网络服务.图像处理.数值计算和科学计算等众多领域.目前业内几

Python自学之路——Python基础(四)内置函数

对上表一些比较重要常用的内置函数做一个整理 chr()与ord()     chr()是将ASCII中十进制编号转换成相应的字符,而ord()刚好相反 c = chr(49) o = ord('1') print(c) print(o) 输出结果: 1 49 知道了chr()的基本用法,可以利用它来生成一个字母验证码,因为验证码都是随机生成的,所以这里要涉及到random模块.在ASCII中,大写字母的十进制编号是从65到90. 小写字母是97到122 1 import random 2 li

Python自学之路——装饰器的秘密

先不管装饰器到底是个什么东东,让我们来聊一聊函数的几个点吧.我们知道,在python里,一切皆是对象,那么函数呢,当然也是对象,而且人家还是一级对象呐.既然是对象,那它就可以被赋值给变量,反之,通过变量也能调用函数.好,需特别注意的点来了,函数调用一定是函数名 + (),如果没有这个括号,函数是不会被调用的,它只能是表示内存里的一个地址,看下面 1 def happy(): 2 print('be happy') 3 print (happy) #并没有调用happy函数,只是打印了happy的

Python学习之路:函数式编程介绍&高阶函数

函数式编程:一种抽象程度很高的范式,重要特点:输入是确定的,输出就是确定的: Python对函数式编程,部分支持: 高阶函数: def add(x,y,f):#函数本身传给函数,就是高阶函数 return f(x)+f(y) res = add(3,-6,abs) print(res)