第七章 面向对象(3):继承与派生

7.4 继承:减少类之间的冗余

  • 什么是继承?
    + 继承指的是类与类之间的关系,是一种什么“是”什么的关系
  • 继承的作用:
    • 解决代码重用问题

继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可以称为基类或超类,新建的类称为派生类或子类。

  • 对象的属性查找:

    • 对象中找>类中找>父类找>父类的父类...>最上级父类>报错

类继承例:

class Parentclass1:
    pass

class Parentclass2:
    pass

class Subclass1(Parentclass1):  # 继承一个类
    pass

class Subclass2(Parentclass1,Parentclass2):  # 继承多个类
    pass

# 查看继承关系

print(Subclass1.__bases__)  # (<class '__main__.Parentclass1'>,)
print(Subclass2.__bases__)  # (<class '__main__.Parentclass1'>, <class '__main__.Parentclass2'>)

把子类们都具有的共同的属性和方法,统一写在父类之中,以达到减少重复写同样代码

继承实例:

class Hero:
    def __init__(self, nickname, hp, atk):
        self.Nickname = nickname
        self.Hp = hp
        self.Atk = atk
    def attack(self, enemy):
        enemy.Hp -= self.Atk

class Gairun(Hero):
    pass

class Reven(Hero):
    pass

h1 = Gairun('a', 100, 10)
h2 = Reven('b', 70, 30)

print(h1.__dict__)
print(h2.__dict__)

h2.attack(h1)

print(h1.Hp)

属性查找例:

class Foo:
    def f1(self):
        print('from Foo.f1')

    def f2(self):
        print('from Foo.f2')
        self.f1()  # 这里self 是调用他的对象,b调用了他,所以self是b

class Bar(Foo):
    def f1(self):
        print('from Bar.f1')

b = Bar()

b.f1()  # Bar类中有f1,所以调用Bar的f1
b.f2()  # Bar类中没有f2,所以调用父类中的f2。父类f2中的f1的self是b,所以就是b.f1()

执行结果:

from Bar.f1
from Foo.f2
from Bar.f1

7.5 派生

在子类中加入子类特有的属性和方法,就是派生

这里对派生属性的性查找顺序依然是:对象>类>父类...>最上级父类>报错

class Hero:
    def __init__(self, nickname, hp, atk):
        self.Nickname = nickname
        self.Hp = hp
        self.Atk = atk
    def attack(self, enemy):
        enemy.Hp -= self.Atk

class Gairun(Hero):
    camp = 'Demacia'  # 子类派生出的新数据属性

    def attack(self, enemy):  # 派生出的方法属性,并且这个属性覆盖了父类
        print('from Geren Class')

    def skill(self, enemy):  # 派生出的方法
        enemy.Hp -= (self.Atk * 2)

class Reven(Hero):
    camp = 'Noxus'
    pass

h1 = Gairun('a', 100, 10)
h2 = Reven('b', 70, 30)

print(h1.__dict__)
print(h2.__dict__)

h1.attack(h2)  # 调用了同名的派生的方法
h1.skill(h2)  # 调用了派生的方法

print(h2.Hp)

原文地址:https://www.cnblogs.com/py-xiaoqiang/p/11210415.html

时间: 2024-11-09 04:57:27

第七章 面向对象(3):继承与派生的相关文章

《软件工程 ——理论、方法与实践》知识概括第七章 面向对象分析

第7章 面向对象分析    面向对象的分析模型:功能模型.分析对象模型.动态模型. 一.分析的概念 分析类可以划分为实体类.边界类和控制类. 在UML语言中,使用构造型<<entity>>.<<boundary>>和<<control>>分别表示实体类.边界类.控制类. 分析活动:理解用例模型.识别分析类(识别实体类.识别边界类.识别控制类).定义交互行为.建立分析类图(定义属性.定义行为.定义关系).评审分析模型.分析过程是一个循环

面向对象(二)——继承、派生、组合以及接口

一.继承与派生 1.1 什么是继承 继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 Python中类的继承分为:单继承和多继承 class People: # 定义父类 def __init__(self,name,age): self.name=name self.age=age def walk(self): print('%s is walking' %self) class Teacher(People): #

Day7 初识面向对象,面向对象之继承与派生

一.面向对象引言 一.面向对象的程序设计的由来 详述见:http://www.cnblogs.com/linhaifeng/articles/6428835.html 二.面向对象引子 写一个简单程序:人狗大战 角色:人.狗 人角色特性:攻击力.生命值.名字.等级 狗角色特性:攻击力.生命值.名字.品种 1.用函数实现功能:角色和技能分别定义不同的函数 1 def person(attack,life_value,name,level): 2 person_dic = {'attack':att

面向对象之继承与派生

阅读目录 一 初识继承 二 继承与抽象(先抽象再继承) 三 继承与重用性 四 派生 五 组合与重用性 六 接口与归一化设计 七 抽象类 八 继承实现的原理(可恶的菱形问题) 九 子类中调用父类的方法 一 初识继承 什么是继承 继承指的是类与类之间的关系,是一种什么是什么的关系,功能之一就是用来解决代码重用问题(比如练习7中Garen与Riven类有很多冗余的代码) 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 pyt

C#图解教程 第七章 类和继承

类和继承 类继承 通过继承我们可以定义一个新类,新类纳入一个已经声明的类并进行扩展. 可以使用已存在的类作为新类的基础.已存在类称为基类(base class),新类称为派生类(derived class).派生类组成如下: 本身声明中的成员 基类的成员 声明派生类,需要在类名后加入基类规格说明 派生类扩展它的基类,因为它包含了基类的成员,加上它本身声明中的新增功能 派生类不能删除它所继承的任何成员 例:OtherClass类,继承自SomeClass class OtherClass:Some

软件工程概论第七章--面向对象分析

本章主要讲了面向对象分析,从分析的概念.识别分析类.定义交互行为.建立分析类图和评审分析模式几个方面展开讲述.面向对象分析模型由三个独立模型,功能模型.分析对象模型.动态模型. 分析的概念中主要讲了分析类与分析活动,分析类用于描述系统中较高层次的对象,从软件功能需求来看能划分为实体类.边界类和控制类.分析活动把需求获取阶段产生的用例和场景转换成分析模型. 识别分析类讲了识别边界类.识别控制类.识别实体类三个方面,识别边界类,通常一个参与者与一个用例之间的交互或通信关联对应一个边界类.识别控制类,

python面向对象之继承与派生

一.继承 继承是一种创建新的类的方式,在python中,新建的类可以继承自一个或者多个父类,原始类称为基类或超类,新建的类称为派生类或子类. python中类的继承分为:单继承和多继承,如果是多继承的话,继承顺序有深度和广度2种 示例: class ParentClass1: #定义父类 pass class ParentClass2: #定义父类 pass class SubClass1(ParentClass1): #单继承,基类是ParentClass1,派生类是SubClass pass

python之旅:面向对象之继承与派生

一 初识继承 编写类时,并非总要从空白开始.如果你要编写的类正好是另一个现成类的特殊版本,可使用继承来减少代码冗余,子类会“遗传”父类的属性,从而解决代码重用问题 什么是继承 继承是一种创建新类的方式,新建的类可以继承一个或多个父类(python支持多继承),父类又可称为基类或超类,新建的类称为派生类或子类. 一个类继承另一个类时,他将自动获得另一个类的所有属性和方法:原有的类称为父类,而新类称为子类.子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法. python中类的继承分为

面向对象的继承和派生

一.继承 1.什么是继承 继承是一种创建新类的方式,新建的类可以继承一个或多个父类(python支持多继承),父类又可称为基类或超类,新建的类称为派生类或子类. 子类会“”遗传”父类的属性,从而解决代码重用问题(比如练习7中Garen与Riven类有很多冗余的代码) 2.python中类的继承分为:单继承和多继承 class ParentClass1: #定义父类 pass class ParentClass2: #定义父类 pass class SubClass1(ParentClass1):