python程序设计——面向对象程序设计:继承
继承是为代码复用和设计复用而设计的
在继承关系中,已有的、设计好的类称为父类或基类,新设计的类为子类或派生类
派生类可以继承父类的公有成员,但不能继承其私有成员
如果需要在派生类中调用基类的方法,可以使用内置函数super()或者通过 基类名.方法名() 实现
---------------------------------------------------------------------------
python支持多继承,如果父类中有相同的方法名,而在子类中使用时没有指定父类名,
则python解释器将从左到右按顺序搜索
# 定义基类
class Person(object): # 必须以object为基类
def __init__(self,name='',age=20,sex='man'):
self.setName(name)
self.setAge(age)
self.setSex(sex) def setName(self,name):
if not isinstance(name,str):
print('name must be string.')
return
self.__name=name def setAge(self,age):
if not isinstance(age,int):
print('age must be integer.')
return
self.__age=age def setSex(self,sex):
if sex != 'man' and sex != 'woman':
print('sex must be "man" or "woman".')
return
self.__sex = sex def show(self):
print('name:',self.__name)
print('age:',self.__age)
print('sex:',self.__sex) # 定义派生类,并调用基类方法
class Teacher(Person):
def __init__(self,name='',age=30,sex='man',id=215):
super(Teacher,self).__init__(name,age,sex)
self.setId(id) def setId(self,id):
if not isinstance(id,int):
print('id must bu integer.')
return
self.__id = id def show(self):
super(Teacher,self).show() # 调用基类的方法
print() if __name__=='__main__':
zhangle = Person('zhang le',19,'man')
zhangle.show()
limu = Teacher('li mu',32,'man',233)
limu.show()
limu.setId(666)
limu.show() out:
name: zhang le
age: 19
sex: man
name: li mu
age: 32
sex: man name: li mu
age: 32
sex: man
python程序设计——面向对象程序设计:继承的更多相关文章
- python之面向对象(继承)
类的继承 python之面向对象(继承) 面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制.继承完全可以理解成类之间的类型和子类型关系. 需要注意的地方:继承语法 c ...
- Python之面向对象:继承
概念:子类继承父类的属性和方法. 一个派生类(derived class)继承基类(bass class)字段和方法.继承也允许把一个派生类的对象作为一个基类对象对待. 一.单继承 :推崇.特点和使用 ...
- python程序设计——面向对象程序设计:类
理解面向对象 基本原则是,计算机程序由多个能够起到子程序作用的单元或对象组合而成 关键性观念是,数据以及对数据的操作封装在一起,组成一个相互依存.不可分割的整体,即对象 python面向对象特性 完全 ...
- python程序设计——面向对象程序设计:属性
python 3.x 的属性 可以将属性设置为 可读,可修改,可删除 # 只读属性,不允许修改和删除 class Test: def __init__(self,value): self.__valu ...
- python程序设计——面向对象程序设计:方法
类中定义的方法分为四类:公有方法,私有方法,静态方法,类方法 公有方法.私有方法都属于对象,私有方法的名字以"__"开始 每个对象都有自己的公有方法和私有方法,这两类方法可以访问属 ...
- C++基本程序设计——面向对象程序设计课堂笔记
主要对老师上课的ppt的笔记整理 C++基本程序设计 1.c++的输入输出 使用cin,cout和流运算符,开头须有 #include<iostream> (1)cin语句:cin> ...
- python之面向对象之继承
#写一个类SchoolMember class SchoolMember(object): member_num = 0 def __init__(self,name,age,sex): self.n ...
- python基础--面向对象之继承
# 继承是一种创建新类的方式,新建的类可以继承一个,或者多个父类, # 父类又可以称为基类或者超类,新建的类可以称为派生类,子类 class ParentClass1: # 定义父类 1 pass c ...
- 你好,C++(31)我终于找到对象啦!6.1 从结构化设计到面向对象程序设计
第6章 当C++爱上面向对象 很多第一次进入C++世界的人都会问:C++中的那两个加号到底是什么意思啊? C++是由C语言发展而来的,它比C语言多出的两个加号,实际上是C语言的自增操作符,表示C++语 ...
随机推荐
- PAT——1064. 朋友数
如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”.例如123和51就是朋友数,因为1+2+3 = 5+1 = 6,而6就是它们的朋友证号.给定一些整数,要求 ...
- vue项目在ie浏览器和360浏览器的兼容模式下不显示,出现promise未定义问题
出现“promise未定义”问题,因为对es6不兼容 在项目中安装 babel-polyfill 依赖包 ① npm install babel-polyfill --save-dev ② 在main ...
- OpenStack(queens)最小化搭建记录——控制与计算共两个节点
境: 2台安装了centos7-minimal的主机 ip地址: 10.132.226.103/24 (controller) 10.132.226.104/24 (compute1) 1.配置主机名 ...
- pycharm使用杂记
R语言解释器在/opt/local/Library/Frameworks/R.framework/Versions/3.5/Resources/bin/R
- 【DB2数据库在windows平台上的安装】
- 浅谈nodejs中HTTP模块应用
这里给大家分享下后端人员如果利用nodejs对数据的一些处理情况 适用于初学者使用 大牛勿喷 给大家分享下主要后端思想部分代码,前端部分就不展示了 const http = require(&quo ...
- Home Assistant系列 -- 设置界面语言与地理位置
Home Assistant 安装的时候会自动根据你的系统语言设置默认语言,安装完成以后也可以根据需要自己设置选择语言.启动 Home Assistant ,浏览器打开web 界面,点击左上角的用户图 ...
- http缓存机制与原理
一.浏览器缓存分类:强制缓存和协商缓存 二.浏览器加载一个页面的简单流程 浏览器第一次请求 浏览器再次请求页面 三.http缓存涉及到的相关术语 缓存命中率:从缓存中得到数据的请求数与所有请求数的比率 ...
- LeetCode——数组篇:659. 分割数组为连续子序列
659. 分割数组为连续子序列 输入一个按升序排序的整数数组(可能包含重复数字),你需要将它们分割成几个子序列,其中每个子序列至少包含三个连续整数.返回你是否能做出这样的分割? 示例 1: 输入: [ ...
- sed: unix与doc换行的转换
在Linux (Unix)平台下回车换行以\n表示 在Window平台下回车换行以\r\n表示 两者的差异导致了: 在window下看Linux的文本排版全乱 在Linux在看Window的文本则是存 ...