专栏首页python3day24 01 初识继承

day24 01 初识继承

day24 01 初识继承

面向对象的三大特性:继承,多态,封装

一、继承的概念

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

class A:  # 父类,基类,超类
    pass
class B:  # 父类,基类,超类
    pass
class A_son(A,B):  # 子类,派生类
    pass
class AB_son(A,B):  # 子类,派生类
    pass
  • 一个类可以被多个类继承,先有父类才有子类
  • 一个类可以继承多个父类----只在python里面才可以,其他语言不可以

注意:从父类不能知道自己将会被哪个类继承,但是从子类肯定可以知道自己的父类,这是从子类像父类指向单方向线程

二、父类的查看方法

类似于对像可以使用_dict_方法查看属性,子类也可以使用_bases_方法查看它的父类

class A:  # 父类,基类,超类
    pass
class B:  # 父类,基类,超类
    pass
class A_son(A):  # 子类,派生类
    pass
class B_son(A,B):  # 子类,派生类
    pass
class AB_son(A,B):  # 子类,派生类
    pass
print(A_son.__bases__)
print(B_son.__bases__)
print(AB_son.__bases__)
print(A.__bases__)
print(B.__bases__)

运行结果:

C:\Users\sku1-1\PycharmProjects\untitled\venv\Scripts\python.exe "C:/Users/sku1-1/PycharmProjects/untitled/day24  01 初识继承.py"
(<class '__main__.A'>,)
(<class '__main__.A'>, <class '__main__.B'>)
(<class '__main__.A'>, <class '__main__.B'>)
(<class 'object'>,)
(<class 'object'>,)

Process finished with exit code 0

从上面的运行结果可以看到,特别的父类A和B的父类都是‘object’,如果没有继承父类,就默认继承‘object’,这也是python3的新式类

三、继承表达的关系:什么是什么的关系

       只有是两个类之间才会产生继承的关系,两个类之间存在一些共同的抽象的东西,将这些共同的东西抽象出来就可以成为这两个类的父类

  以之前的人狗大战的游戏为例,里面的人物角色与狗的角色,定义它们的类的时候,里面有一些属性是相同的,比如:name,blood,aggr,而且狗和人都是动物,这样就可以抽象出它们的父类---animal,参考以下代码:

class animal:  # 父类
    def __init__(self,name,blood,aggr):
        self.name=name
        self.blood=blood
        self.aggr=aggr
class dog(animal):  # 子类
    def bite(self,someone):
        someone.blood-=self.aggr
class someone(animal):  # 子类
    def attack(self,dog):
        dog.blood -=self.aggr

dog1 = dog('溜溜球',200,500)
print(dog1.name)
person1 = someone('王昭君',300,500)
print(person1.name)

运行结果:

溜溜球
王昭君

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python对象和类

    py3study
  • JavaScript实现3秒后页面自动跳

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.or...

    py3study
  • python记录day_20 多继承

    在python中,支持多继承,一个类可以拥有多个父类。但是多继承中, 存在着这样一个问题,当两个父类中出现了重名方法的时候该怎么办呢? 这时就涉及到如何查找父类...

    py3study
  • 【小家Spring】Feign发送Get请求时,采用POJO对象传递参数的最终解决方案 Request method 'POST' not supported (附带其余好几个坑)

    spring cloud技术栈里面,Feign可以使得我们的rest调用和调用本地方法一样方便。但是它真的有非常多的坑,苦不堪言啊。本文将描述我们最为常遇到的坑...

    YourBatman
  • 小程序可以指纹识别了!我们还发现了一个更大的惊喜

    这一次的新能力更新,包括设定分享卡片封面图、支持指纹识别等多种新功能,涵盖了小程序开发、运营和使用的各个方面。

    知晓君
  • ExtJs学习笔记(7)_获取GridPanel选中行的详细信息

    这一节,我们将学习如何获取Grid当前选中行的信息 1.xml数据源内容: <?xml version="1.0" encoding="UTF-8"?> <D...

    菩提树下的杨过
  • 小程序如何区分转发好友和转发群

    知晓程序员,专注微信小程序开发的程序员! 前言:群内隔段时间就有同学问,小程序的转发,是否可以区分转发给好友,还是转发给微信群,今天给大家说说如何区分。顺便说一...

    连胜
  • Python 安装nose

    download地址:http://pypi.python.org/packages/source/n/nose/nose-1.0.0.tar.gz#md5=4...

    py3study
  • 每次登录验证都用Python来识别验证码,真的是太方便了!

    平时登录个网页,这个要验证码,那个也要验证码,真的是不胜其烦,还好我有Python在手,这都不叫事~

    诸葛青云
  • Java子类的父类和要实现的接口有相同的方法/函数会冲突吗

    答案是,不会。子类优先实现父类的方法,虽然父类的方法和接口的方法长得一模一样。 class father{ public void f(){} } in...

    老白

扫码关注云+社区

领取腾讯云代金券