首页 > 编程语言 >python学习笔记:继承与超类

python学习笔记:继承与超类

时间:2023-07-12 12:12:35浏览次数:31  
标签:Bobo __ python 子类 Dog 笔记 超类 print class

与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.

标签:Bobo,__,python,子类,Dog,笔记,超类,print,class
From: https://www.cnblogs.com/lmc7/p/17547168.html

相关文章

  • Python爬取哔哩哔哩视频
    Python爬取哔哩哔哩视频一、环境准备我这里使用的是环境如下仅供参考:开发工具:pycharmpython环境:python-3.8.0依赖的包:shutil,os,re,json,choice,requests,lxml二、页面分析我在这里就拿前段时间非常火的马老师的视频来举例子吧。视频链接:https://www.bilibili.com/video/BV1Ef4......
  • python 的命令行参数使用ArgumentParser
    argparse是一个python模块,用途是:命令行执行选项、参数和子命令的解释importargparse #创建解释器parser=argparse.ArgumentParser()#添加参数parser.add_argument('-g','--good',choices=['yuwen','shuxue'])#'-g'代表短选项,在命令行输入-g和-good效果一样,作......
  • Linux下python脚本自启动和定时启动
    一、服务器开机自动运行用root权限编辑以下文件 sudovim/etc/rc.local 编辑启动脚本的命令地址 /usr/bin/python3/path/to/python>/path/to/log 二、定时启动编辑crontab文件 crontab-e 编辑命令 */30****/usr/bin/python3/path/to/python>>/path/to......
  • python 入门之机器学习
    一、什么是机器学习什么是机器学习?机器学习其实就是想让计算机像人一样思考而研发出的计算机理论,目前常用的机器学习有以下几种算法:监督学习supervisedlearning;非监督学习unsupervisedlearning;半监督学习semi-supervisedlearning;强化学习reinforcementlearning;......
  • python的pandas库读取SQL sever
    python的pandas库读取SQLsever有两种方法。一种使用pymssql,另一种使用sqlalchemy。只是将数据库中的表读为DataFrame,不进行修改等表操作。目录• python的pandas库读取SQLsever有两种方法。一种使用pymssql,另一种使用sqlalchemy。这里只是将数据库中的表读取为DataFrame,不进......
  • python 常用快捷键
    python常用快捷键最重要的快捷键ctrl+shift+A:万能命令行shift两次:查看资源文件新建工程第一步操作module设置把空包分层去掉,compactemptymiddlepackage设置当前的工程是utf-8,设置的Editor-->FileEncodings-->全部改成utf-8,注释ctrl+/:单行注释光标操作ctrl+a......
  • JS-Forward 学习笔记
    什么是JS-Forward?不了解的同学,可以先看看JS-Forward的Github仓库介绍,https://github.com/G-Security-Team/JS-ForwardJS-Forward是一款可以配合类似BurpSuite等抓包软件的脚本,脚本的功能是可以将js里面的参数通过Http请求将参数发送出来,在外部进行修改,最后将修改后的返回值再......
  • Python 学习路线图
    Python学习路线图在这个系列笔记中,我将陆续整理自己在学习Python编程语言及其框架的过程中留下的笔记和代码,目的是掌握如何在生产环境中利用各种领域的第三方框架来快速开发应用程序。和大多数学习过程一样,我需要在第一部分笔记中花费一点篇幅来鸟瞰一下Python语言所涉及的......
  • 组合数学 笔记
    组合数学笔寄加法原理完成一个事情有\(n\)类做法,第\(i\)类做法又分为\(a_i\)种。所以这件事情有\(S=\sum_{i=1}^{n}a_i\)的不同的完成方法。乘法原理草字头有\(3\)种写法,回字有\(4\)种写法,所以茴香豆的茴有\(S=3\times4\)种写法。同样,一件事情有\(n\)个步......
  • 【学习笔记】空空的浅谈DP
    特邀讲师:墨染空洛谷用户@Remakedalao博客中的学习笔记:https://www.cnblogs.com/dmoransky/p/14063918.htmlDP1决策单调性1.2由已知量转移:分治算法洛谷P3515:[POI2011]LightningConductor1.3由之前状态转移:单调栈上二分洛谷P1912:[NOI2009]诗人小G\(f......