与java类似,继承的出现是为了提高代码的重复利用率,避免多次输入同样的代码。而超类就是java中的父类。

1.继承

要指定超类,可在定义类时,在class语句中的类名后加上超类名

  • 基类就是超类,派生类就是子类

格式

class Dog:   #
pass class Bobo(Dog): # Dog类的子类
pass

子类会

  • 重新定义重写超类方法init
  • 继承超类的方法,无需再次编写
class Dog:
def __init__(self):
print('wang!!!') def eat(self):
print('Dog is eating.') class Bobo(Dog): # 继承Dog
pass tom = Bobo()
tom.eat()
>
wang!!!
Dog is eating.

在子类中进行重写

class Dog:
def __init__(self):
print('wang!!!') def eat(self):
print('Dog is eating.') class Bobo(Dog):
def __init__(self):
print('Bobo is wang!') def eat(self):
print('Bobo is eating.') tom = Bobo()
tom.eat()
>
Bobo is wang!
Bobo is eating.

1.1查找一个类的子类和基类

  • issubclass 确定一个类是否是另一个类的子类
issubclass(Bobo, Dog)  # 子类 超类
> True
issubclass(Dog, Bobo)
> False
  • 已知一个类,想知道它的基类,访问特殊属性 __bases__
print(Bobo.__bases__)
> (<class '__main__.Dog'>,)
  • isinstance 确定创建的对象是否是特定类的实例

    创建子类的实例,这个对象同时也是其基类的实例

class Dog:
pass class Bobo(Dog):
pass tom = Bobo() print(isinstance(tom, Bobo))
print(isinstance(tom, Dog))
>
True
True
  • 使用属性__class__ 可以知道该实例属于哪个类
print(tom.__class__)
> <class '__main__.Bobo'>

1.2 多个超类

尽量避免使用

格式

class A:
pass
class B:
pass class C(A, B): # 同时继承A和B
pass

1.3接口

接口这一概念与多态相关。实际上,python中没有与java相对应的接口。需要特定的模块来实现

1.4 抽象基类

抽象类不能(不应该)被实例化,用于定义子类应该实现的一些抽象方法。

格式

from abc import ABC, abstractmethod
class 类名(ABC): # 继承ABC类
@abstractmethod # 标记为抽象方法,在子类中必须实现
def 方法名(self):
pass
from abc import ABC, abstractmethod

class Dog(ABC):
@abstractmethod
def eat(self):
pass class Bobo(Dog):
def eat(self):
print('eating.') tom = Bobo()
tom.eat()
> eating.

python学习笔记:继承与超类的更多相关文章

  1. python学习笔记4_类和更抽象

    python学习笔记4_类和更抽象 一.对象 class 对象主要有三个特性,继承.封装.多态.python的核心. 1.多态.封装.继承 多态,就算不知道变量所引用的类型,还是可以操作对象,根据类型 ...

  2. python学习笔记整理——字典

    python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...

  3. 【python学习笔记】7.更加抽象

    [python学习笔记]7.更加抽象 类的定义就是执行代码块 在内存保存一个原始实例,可以通过类名来访问 类的实例化,是创建一个原始实例的副本, 并且所有成员变量与原始实例绑定 通过修改实例变量,可以 ...

  4. python学习笔记5_异常

    python学习笔记5_异常 1.什么事异常 Python使用异常对象(exception object) 来表示异常情况.遇到错误会发生异常. 如果异常对象未被处理或被捕捉,程序就会用所谓的回溯(t ...

  5. Python学习笔记之异常处理

    1.概念 Python 使用异常对象来表示异常状态,并在遇到错误时引发异常.异常对象未被捕获时,程序将终止并显示一条错误信息 >>> 1/0 # Traceback (most re ...

  6. Python学习笔记之类与对象

    这篇文章介绍有关 Python 类中一些常被大家忽略的知识点,帮助大家更全面的掌握 Python 中类的使用技巧 1.与类和对象相关的内置方法 issubclass(class, classinfo) ...

  7. Python 学习笔记(下)

    Python 学习笔记(下) 这份笔记是我在系统地学习python时记录的,它不能算是一份完整的参考,但里面大都是我觉得比较重要的地方. 目录 Python 学习笔记(下) 函数设计与使用 形参与实参 ...

  8. Python学习笔记总结

    目录 Python学习笔记总结 前言 安装 数据类型 Hello,World 变量 字符串 首字母大写 全部小写 全部大写 Tab和换行符 格式化 去除空格 List列表 列表增删改查排序 遍历列表 ...

  9. Think Python 学习笔记

    #!/usr/bin/env python# coding: utf-8# # Think Python 学习笔记# 1.关于异或计算符# In[2]:6^2# 2.关于函数# 注意:变量名称不能用数 ...

  10. VS2013中Python学习笔记[Django Web的第一个网页]

    前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...

随机推荐

  1. 学会提示-AI时代职场必修课

    作者:京东 何雨航 " 上个时代要学会提问,这个时代要学会提示." 引言 当你在写提数代码时,小张已经完成了数据分析:当你正在整理材料时,小王却在和对象逛环球影城:述职时,你发现小 ...

  2. ARM Cortex-M4|非常好用的一种串口收发方式

    在这里分享项目中我经常使用的一种串口收发方式:阻塞发送 + 接收中断 +空闲中断 + 环形队列 项目代码地址:www.baidu.com 一.简介 串口发送使用最简单的阻塞发送方式,一般来说都是接收的 ...

  3. 深度学习03-(图像梯度处理、图像轮廓、图像预处理在AI中的应用)

    深度学习03-计算机视觉基本理论2 深度学习03-(计算机视觉基本理论2) 图像梯度处理 什么是图像梯度 模板运算 均值滤波 高斯滤波 中值滤波 边沿检测 锐化 图像轮廓 什么是图像轮廓 查找和绘制轮 ...

  4. RocketMQ的简单使用

    大家好,我是Leo!今天来和大家分享RocketMQ的一些用法. 领域模型介绍 Producer: 用于生产消息的运行实体. Topic: 主题,用于消息传输和存储的分组容器. MessageQueu ...

  5. Swagger之学习使用

    前言 这个是为了介绍一下Swagger的使用,最近也在使用Swagger,就在下面这篇文章介绍下,我特地改了上次分享的外卖项目,添加了Swagger注解- 添加依赖 Maven项目添加依赖 <d ...

  6. 微信小程序客服、支付、定位、下拉加载功能

    一.客服功能 1.只要你微信小程序,后台添加了客服,引用以下button,就可以进入聊天(在小程序官网如何添加客服用户,请自行百度,谢谢) 2.通过按钮方式 <button open-type= ...

  7. express服务器框架

    Express 为了提高开发效率,我们在开发过程中,都会尽量使用别人已经开发好的第三方模块,而我们想要快速实现服务器端的开发,推荐一个当下比较流行的框架:Express Express 作为开发框架, ...

  8. 2022-11-08:以下go语言代码输出什么?A:2;B:编译错误;C:运行 panic。 package main import “fmt“ func main() { a := []int

    2022-11-08:以下go语言代码输出什么?A:2:B:编译错误:C:运行 panic. package main import "fmt" func main() { a : ...

  9. 2022-08-24:给定一个长度为3N的数组,其中最多含有0、1、2三种值, 你可以把任何一个连续区间上的数组,全变成0、1、2中的一种, 目的是让0、1、2三种数字的个数都是N。 返回最小的变化次

    2022-08-24:给定一个长度为3N的数组,其中最多含有0.1.2三种值, 你可以把任何一个连续区间上的数组,全变成0.1.2中的一种, 目的是让0.1.2三种数字的个数都是N. 返回最小的变化次 ...

  10. 2021-03-30:给定一个整数组成的无序数组arr,值可能正、可能负、可能0。给定一个整数值K,找到arr的所有子数组里,哪个子数组的累加和<=K,并且是长度最大的。返回其长度。

    2021-03-30:给定一个整数组成的无序数组arr,值可能正.可能负.可能0.给定一个整数值K,找到arr的所有子数组里,哪个子数组的累加和<=K,并且是长度最大的.返回其长度. 福大大 答 ...