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

原文地址:https://www.cnblogs.com/feinaio2017/p/8955089.html

时间: 2024-08-12 21:30:45

python程序设计——面向对象程序设计:继承的相关文章

python之面向对象(继承的实现原理及封装)

一.继承的实现原理 继承的顺序 class A(object): def test(self): print('from A') class B(A): def test(self): print('from B') class C(A): def test(self): print('from C') class D(B): def test(self): print('from D') class E(C): def test(self): print('from E') class F(D

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

http://www.kuqin.com/shuoit/20150809/347546.html 当C++爱上面向对象 很多第一次进入C++世界的人都会问:C++中的那两个加号到底是什么意思啊? C++是由C语言发展而来的,它比C语言多出的两个加号,实际上是C语言的自增操作符,表示C++语言是在C语言的基础上添加了新的内容而发展形成的.如果其中一个加号代表C++在C语言的基础上增加了模板.异常处理等现代程序设计语言的新特性的话,那么另外一个加号则代表C++在C语言的基础上增加了对面向对象程序设计

Python基础(16)_面向对象程序设计(类、继承、派生、组合、接口)

一.面向过程程序设计与面向对象程序设计 面向过程的程序设计:核心是过程,过程就解决问题的步骤,基于该思想设计程序就像是在设计一条流水线,是一种机械式的思维方式 优点:复杂的问题的简单化,流程化 缺点:扩展性差 面向对象的程序设计:核心是对象,对象是特征(变量)与技能(函数)的结合体,是一种上帝式的思维方式 优点:解决了程序的扩展性 缺点:可控性差 二.类和对象 以游戏举例,基于面向对象设计一个款游戏:英雄联盟,每个玩家选一个英雄,每个英雄都有自己的特征和和技能,特征即数据属性,技能即方法属性,特

python之面向对象的程序设计

第一:程序设计思想与发展历程(了解) 1940年以前:面向机器编程最早的是采用机器语言编程,也就是直接使用二进制码来表示机器能够识别的指令和数据.优点:机器语言由机器直接执行,速度快缺点:写起来非常困难,并且不容易修改 汇编语言:用助记符号代替机器指令的操作码,用地址符号或者标号代替指令或操作数的地址优点:比机器语言的二进制码编写方便些缺点:汇编语言本质上还是一种面向机器的语言,编写困难,易出错 脱离机器后:面向过程编程面向过程的结构化程序设计强调功能的抽象和程序的模块化, 它将解决问题的过程看

javascript面向对象程序设计——继承初步(by vczero)

上一篇说了javascript的封装,没有刻意去说javascript的“共有函数”.“私有函数”,因为个人觉得这只是作用域的问题,我们不能刻意的模仿强类型语言(C++/JAVA)而去编写代码.尊重每一门语言的特性才是最为重要的. 一.基于prototype原型的继承 1 var Person = function(name, age){ 2 this.name = name; 3 this.age = age; 4 } 5 6 Person.prototype = { 7 addUser: f

面向对象程序设计-继承与多态

前面我们讨论了如何在 JavaScript 语言中实现对私有实例成员.公有实例成员.私有静态成员.公有静态成员和静态类的封装.这次我们来讨论一下面向对象程序设计中的另外两个要素:继承与多态. 1 又是几个基本概念 为什么要说又呢? 在讨论继承时,我们已经列出了一些基本概念了,那些概念是跟封装密切相关的概念,今天我们要讨论的基本概念,主要是跟继承与多态相关的,但是它们跟封装也有一些联系. 1.1 定义和赋值 变量定义是指用 var a; 这种形式来声明变量. 函数定义是指用 function a(

JavaScript 面向对象程序设计(下)——继承与多态 【转】

JavaScript 面向对象程序设计(下)--继承与多态 前面我们讨论了如何在 JavaScript 语言中实现对私有实例成员.公有实例成员.私有静态成员.公有静态成员和静态类的封装.这次我们来讨论一下面向对象程序设计中的另外两个要素:继承与多态. 1 又是几个基本概念 为什么要说又呢? 在讨论继承时,我们已经列出了一些基本概念了,那些概念是跟封装密切相关的概念,今天我们要讨论的基本概念,主要是跟继承与多态相关的,但是它们跟封装也有一些联系. 1.1 定义和赋值 变量定义是指用 var a;

Java面向对象程序设计--与C++对比说明:系列3(Java 继承机制)

继承(inheritance)背后的核心思想是:可以在现有类的基础上创建自己的新类,在新类中继承原来类的方法和数据域,并添加适合当前应用场景的新的数据和方法. 1. 类,超类,子类 (class,superclass,subclass): Java 中的inheritance都是public inheritance,并不想C++中存在public,protected和private inheritance的分类. class subclass extends superclass; 这里有两个要

python面向对象程序设计(类成员)第二节

python 面向对象程序设计(类成员) 目录: (1)        类成员和实例成员 (2)        公有成员和私有成员 (3)        方法 (一)类成员与实例成员: 实例属性属于实例(对象),只能通过对象名访问. 类属性属于类,类名或对象名都可以访问,属于类的数据成员是在类中所有方法之外定义的. class Car:     price = 1000   #类属性     def __init__(self,c):         self.color = c car1 =