python 面向对象基础梳理三 继承、派生与组合

什么是继承

继承是一种创建新类的方式,是一种什么是什么的关系,继承的功能之一就是解决代码重用的问题,继承是一种创建新类的方式,在python 中,新建的一个类可以继承一个或者多个父类,父类由可以成为基类或者超类,新建的类称为派生类或子类。

继承的分类

继承可以分为 单继承和多继承,Python 2 和 python 3 中有经典类和新式类的区分,这里描述的是python3

示例演示

# 输入

class Pare1class:
    pass

class Pare2class:
    pass

class Childclass(Pare1class):
    pass

class Childclass2(Pare1class, Pare2class):

print(Childclass.__bases__)

print(Childclass2.__bases__)

# 输出

(<class ‘__main__.Pare1class‘>,)
(<class ‘__main__.Pare1class‘>, <class ‘__main__.Pare2class‘>)

如果没有指定基类,python 会默认继承 object 类,object 是所有Python 类的基类

# 输入 

print(Pare1class.__bases__)
print(Pare2class.__bases__)

# 输出

(<class ‘object‘>,)
(<class ‘object‘>,)

继承与重用

在python 中编写类的过程中,我们编写了一个 类 A , 想要在编写一个类B ,但类B 的大部分功能与 A类似,就用到了继承了,通过继承,B 类就会继承 A类,实现A 类的功能

继承示列演示,定义一个动物类 Animal,然后在定义两个类Dog  和 Cat  Dog 和Cat 继承Animal 的所有特征

class Animal:
    def __init__(self, name, aggressive, life_value):
        self.name = name
        self.aggressive = aggressive
        self.life_value = life_value

    def eat(self):
        print("%s is eating" % self.name)

    def sleep(self):
        print("%s is sleeping" % self.name)

    def attack(self, enemy):
        enemy.life_value -= self.aggressive

class Dog(Animal):
    pass

class Cat(Animal):
    pass

d1 = Dog(‘snooppy‘, 40, 100)
c1 = Cat(‘kitty‘, 30, 100)

print(d1.life_value) # 100
c1.attack(d1)  # c1 调用 attack
print(d1.life_value) # 70 

# 输出
70

派生

当然子类也可以添加新的属性或者在重新定义属性,一旦子类重新定义了自己的属性且与父类重名,那么就以子类的为准了

原文地址:https://www.cnblogs.com/brave1/p/10205441.html

时间: 2024-08-27 06:27:23

python 面向对象基础梳理三 继承、派生与组合的相关文章

python面向对象基础(三)内置方法 __xx__

__str__和__repr__,__format__ 改变对象的字符串显示__str__,__repr__ 自定制格式化字符串__format__ #_*_coding:utf-8_*_ format_dict={ '格式1':'{obj.name}-{obj.addr}-{obj.type}',#学校名-学校地址-学校类型 '格式2':'{obj.type}:{obj.name}:{obj.addr}',#学校类型:学校名:学校地址 '格式3':'{obj.type}/{obj.addr}/

【Java面向对象基础(三)】面向对象思想

[喵"的Android之路][基础篇(三)][Java面向对象基础]面向对象思想 1 面向对象的WWH 1.1 What--什么是面向对象 首先,要理解“对象”.在Thinking in Java中提到“Everything is an object”,即万物皆对象.这里的“对象”指的是任何实体或者任何可以当作实体看待的“虚幻的事物”.比如现实中的人(男人.女人.老人.小孩而...).动物(大象.狮子.猴子...).桌子.凳子.汽车.ATM机等等,也可以使看不见摸不着的空气(氧气.二氧化碳.氮气

Python入门基础学习 三

Python入门基础学习 三 数据类型 Python区分整型和浮点型依靠的是小数点,有小数点就是浮点型. e记法:e就是10的意思,是一种科学的计数法,15000=1.5e4 布尔类型是一种特殊的整形,true就相当于1,false相当于0,可以用来计算 类型转换 转换:整数:int();字符串:str();浮点数:float() 转换例子:(图9) 如果用内置函数当变量名,比如str=123,一旦被赋值,再使用这个函数会被报错. type()函数可以明确告诉我们变量类型. isinstance

python面向对象基础

面向对象基础 1. 简述 编程方式: 面向过程: 根据代码在脚本的堆叠顺序,从上到下依次执行 函数式编程:将相同功能的代码封装到函数中,直接调用即可,减少代码重复性 面向对象:对函数进行分类和封装,将同类的函数放到一个类中,使调用更简单 为嘛要面向对象 应用需求 要的对系统的cpu.内存.硬盘等进行监控,超过阈值则告警 while True:    if cpu利用率 > 90%:        #发送邮件提醒        连接邮箱服务器        发送邮件        关闭连接    

python 面向对象基础和高级复习

面向对象基础 面向对象编程 面向过程编程:类似于工厂的流水线 优点:逻辑清晰 缺点:扩展性差 面向对象编程:核心是对象二字,对象属性和方法的集合体,面向对象编程就是一堆对象交互 优点:扩展性强 缺点:逻辑非常复杂 类与对象 对象:属性和方法的集合体 类:一系列相同属性和方法的集合体 现实世界中先有对象后有类,python中先有类,再实例化出对象 对象的属性的查找顺序 先对象本身-->类-->父类-->父类的父类-->object-->自己定制的元类-->type 给对象

Python 面向对象基础知识

面向对象基础知识 1.什么是面向对象编程? - 以前使用函数 - 类 + 对象 2.什么是类什么是对象,又有什么关系? class 类: def 函数1(): pass def 函数2(): pass # obj是对象,实例化的过程 obj = 类() obj.函数1() ========== 面向对象不好 ============ ========== 函数编程好 ============== - 有时候,函数编程能实现?比较麻烦. - 面向对象非常的简单就能实现. 3.什么时候适用面向对象?

python面向对象三大特性之继承、多态

继承 什么是继承          所谓继承指提供了同一类对象共性的处理方法,子类继承父类共性的东西. 这样有利于代码的复用性,即子类拥有父类的方法.通过继承创建的新类称为"子类"或"派生类",被继承的类称为"基类"."父类"或"超类". 继承可以想象成什么是什么的关系 python中类的继承分为:单继承和多继承 class Parent1: # 父类1 pass class Parent2: #父类2 p

十六、python面向对象基础篇

面向对象基础: 在了解面向对象之前,先了解下变成范式: 编程范式是一类典型的编程风格,是一种方法学 编程范式决定了程序员对程序执行的看法 oop中,程序是一系列对象的相互作用 python支持多种编程范式,面向过程,面向对象,面向切面(装饰器部分)等 -------------------------------------------------------------------- -------------------------------------------------------

python面向对象的三大特征--继承

#什么时候用继承 #1.当类之间有显著不同,并且较小的类是较大的类所需的组件时,用组合比较好 #2.当类之间有很多相同的功能,提供这些共同的功能做成基类,用继承比较好 class Dad: "这个是爸爸类" money=10 def __init__(self,name): print("爸爸") self.name=name def hit_son(self): print("%s 正在打儿子" %self.name) class Son(Da