继承是为代码复用和设计复用而设计的

在继承关系中,已有的、设计好的类称为父类或基类,新设计的类为子类或派生类

派生类可以继承父类的公有成员,但不能继承其私有成员

如果需要在派生类中调用基类的方法,可以使用内置函数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程序设计——面向对象程序设计:继承的更多相关文章

  1. python之面向对象(继承)

    类的继承 python之面向对象(继承) 面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制.继承完全可以理解成类之间的类型和子类型关系. 需要注意的地方:继承语法 c ...

  2. Python之面向对象:继承

    概念:子类继承父类的属性和方法. 一个派生类(derived class)继承基类(bass class)字段和方法.继承也允许把一个派生类的对象作为一个基类对象对待. 一.单继承 :推崇.特点和使用 ...

  3. python程序设计——面向对象程序设计:类

    理解面向对象 基本原则是,计算机程序由多个能够起到子程序作用的单元或对象组合而成 关键性观念是,数据以及对数据的操作封装在一起,组成一个相互依存.不可分割的整体,即对象 python面向对象特性 完全 ...

  4. python程序设计——面向对象程序设计:属性

    python 3.x 的属性 可以将属性设置为 可读,可修改,可删除 # 只读属性,不允许修改和删除 class Test: def __init__(self,value): self.__valu ...

  5. python程序设计——面向对象程序设计:方法

    类中定义的方法分为四类:公有方法,私有方法,静态方法,类方法 公有方法.私有方法都属于对象,私有方法的名字以"__"开始 每个对象都有自己的公有方法和私有方法,这两类方法可以访问属 ...

  6. C++基本程序设计——面向对象程序设计课堂笔记

    主要对老师上课的ppt的笔记整理 C++基本程序设计 1.c++的输入输出 使用cin,cout和流运算符,开头须有 #include<iostream> (1)cin语句:cin> ...

  7. python之面向对象之继承

    #写一个类SchoolMember class SchoolMember(object): member_num = 0 def __init__(self,name,age,sex): self.n ...

  8. python基础--面向对象之继承

    # 继承是一种创建新类的方式,新建的类可以继承一个,或者多个父类, # 父类又可以称为基类或者超类,新建的类可以称为派生类,子类 class ParentClass1: # 定义父类 1 pass c ...

  9. 你好,C++(31)我终于找到对象啦!6.1 从结构化设计到面向对象程序设计

    第6章 当C++爱上面向对象 很多第一次进入C++世界的人都会问:C++中的那两个加号到底是什么意思啊? C++是由C语言发展而来的,它比C语言多出的两个加号,实际上是C语言的自增操作符,表示C++语 ...

随机推荐

  1. UVA - 1197 (简单并查集计数)

    Severe acute respiratory syndrome (SARS), an atypical pneumonia of unknown aetiology, was recognized ...

  2. 404 Note Found队-Alpha3

    目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:丹丹 组员7:家伟 组员8:政演 组员9:鸿杰 组员10:刘一好 组员11:何宇恒 展示组内最 ...

  3. freemark生成静态网页乱码问题

    输出流问题:修改Writer如下: OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(dir), &quo ...

  4. Java Service Wrapper 发布Java程序为Windows服务

    下载Windows版本:https://www.krenger.ch/blog/java-service-wrapper-3-5-37-for-windows-x64/ 转自:F:\java\bhGe ...

  5. Objective-C 方法交换实践(三) - Aspects 源码解析

    一.类与变量 AspectOptions typedef NS_OPTIONS(NSUInteger, AspectOptions) { AspectPositionAfter = 0, /// 原方 ...

  6. 解决Vue中"This dependency was not found"的方法

    今天在初始化项目中,出现了一个奇怪的情况:明明路径是对的,但是编译的时候,一直报"This dependency was not found"的错. 代码如下: import Vu ...

  7. redis、Memcached、MongoDb使用心得

    最近在思考数据库以及缓存的问题,发现这些知识点其实是有一点关联的,于是这篇文章通过一个连环提问的方式将这些知识点串联起来. 问:为什么要用 Memcached.Redis,直接用 MySQL 这些数据 ...

  8. tp5多入口配置

    手册里可能有写,但不是特别清晰,在这给个实例,有两种方式: 1.多个入口文件: 将public下的index.php复制一份,粘贴.重命名为对应模块的名字,如admin: 编辑admin.php的内容 ...

  9. CTF-安恒19年一月月赛部分writeup

    CTF-安恒19年一月月赛部分writeup MISC1-赢战2019 是一道图片隐写题 linux下可以正常打开图片,首先到binwalk分析一下. 里面有东西,foremost分离一下 有一张二维 ...

  10. 数据结构与算法之排序(1)冒泡排序 ——in dart

    最经典的入门排序算法,冒泡排序,dart语言实现.数组仍然采用随机生成的数组,使用dart内置的List 的generate方法,排序前后分别打印出数组,以观察效果. import 'dart:mat ...