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++语 ...
随机推荐
- HDU 1004 Let the Balloon Rise(map的使用)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1004 Let the Balloon Rise Time Limit: 2000/1000 MS (J ...
- SSAS 度量值中的distinct count局聚合方式会数为null的值
我们来看一个例子 Analysis Services: For Distinct Count measure NULL = 0 If you are to look at the table of v ...
- web相关文件加载顺序
WEB相关文件的加载顺序 一. 1.启动一个WEB项目,WEB容器会先去读取它的配置文件web.xml,读取<context-param>和<listener>两个节点. ...
- throws、throw和try catch
在学习代理模式的时候,编写动态生成代理类.java文件时,用try{}catch(){}捕获异常发现catch(Exception e)报错,得换成catch(Throwable e),然后又查了查两 ...
- Vue 源码分析——构造函数原型
在执行 npm run dev 的时候 根据script/config.js 文件中的配置 'web-full-dev': { entry: resolve('web/entry-runtime-wi ...
- nodejs( koa2 )配置 browserHistory
前言 既然能搜到并且还点进来看这篇文章, 那么肯定是知道后台为什么要配置 browserHistory, 也肯定知道为什么非要去用相对来说更麻烦的吧browserHistory, 而不用更简单点的不需 ...
- node.js 基于cheerio的爬虫工具,需要登录权限的爬虫工具
公司有过一个需求,需要拿一个网页的的表格数据,数据量达到30w左右:为了提高工作效率. 结合自身经验和网上资料.写了一套符合自己需求的nodejs爬虫工具.也许也会适合你的. 先上代码.在做讲解 'u ...
- #leetcode刷题之路27-移除元素
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度.不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. ...
- python学习笔记:第8天 文件操作
目录 1. 文件操作介绍 2. 文件操作的几种方式 3. 文件的操作的方法 1. 文件操作介绍 说到操作文件我们肯定会想到流,文件的操作都是通过流来操作的.在python中文件的操作非常简单,并不像J ...
- WPF几个基础概念的浅显理解
1.逻辑树与视觉树 逻辑树在结构上与xaml文件对应 视觉树更细化,拆分到控件的每个组成部分 2.依赖属性与附加属性 依赖属性:就是自己自己没有属性值,而是通过Binding从数据源获得值,就是依赖在 ...