首页 > 编程语言 >Python 抽象类和抽象方法

Python 抽象类和抽象方法

时间:2023-08-19 10:33:43浏览次数:34  
标签:__ Python self init length 抽象 抽象类 class def

Python 抽象类和抽象方法

Python 通过继承 abc 模块中的 ABC 来实现抽象类,通过 abc 模块的 abstractmethod 装饰抽象方法

示例

from enum import Enum
from abc import ABC, abstractmethod


class ShapeType(Enum):
    RECTANGLE = 1
    SQUARE = 2


class Shape(ABC):
    def __init__(self, t: ShapeType):
        self.type = t

    def get_area(self):
        raise NotImplementedError

    def __str__(self):
        return f"I'm a {self.type.name.lower()}, my area is {self.get_area()}"


class Rectangle(Shape):
    def __init__(self, width: int, height: int):
        super().__init__(ShapeType.RECTANGLE)
        self.width = width
        self.height = height

    def get_area(self):
        return self.width * self.height


class Square(Shape):
    def __init__(self, side_length: int):
        super().__init__(ShapeType.SQUARE)
        self.side_length = side_length

    def get_area(self):
        return self.side_length * self.side_length


def test_abstract_class():
    shapes = [Rectangle(2, 3), Square(5), Rectangle(3, 4)]
    for shape in shapes:
        print(f"{shape}")

标签:__,Python,self,init,length,抽象,抽象类,class,def
From: https://www.cnblogs.com/goallin/p/17642135.html

相关文章

  • Python提取函数参数 inspect​​​模块
    1解析为字典https://blog.csdn.net/tutan123321/article/details/131319113defprint_params(**params):forkey,valueinparams.items():print(key+":"+str(value))2 __code__https://blog.csdn.net/weixin_44224529/article/details/1212588953i......
  • python+playwright 学习-71 expect 断言设置timeout 超时和自定义错误内容
    前言playwright提供了一个expect方法用于断言,还可以设置超时时间。expect使用断言描述expect(locator).to_be_checked()Checkboxischeckedexpect(locator).to_be_disabled()Elementisdisabledexpect(locator).to_be_editable()Elementisenabled......
  • linux环境下基于python的OpenCV 保存视频
    一概念在OpenCV中保存视频使用的是VedioWriter对象,在其中指定输出文件的名称,A创建视频写入的对象out=cv2.VideoWriter(filename,fourcc,fps,frameSize)参数含义:filename:视频保存的位置fourcc:指定视频编解码器的4字节代码fps:帧率frameSize:帧大小B 设置视频的编解......
  • Base64及其Python实现
    1.什么是Base64Base64是一种基于64个可打印字符来表示二进制数据的表示方法Base64是一种编码方式,提及编码方式,必然有其对应的字符集合。在Base64编码中,相互映射的两个集合是:二进制数据{0,1}{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,......
  • python 面试题第一弹
    1.如何理解Python中的深浅拷贝浅拷贝(ShallowCopy)创建一个新的对象,该对象的内容是原始对象的引用。这意味着新对象与原始对象共享相同的内存地址,因此对于可变对象来说,如果修改了其中一个对象,另一个对象也会受到影响。浅拷贝通常使用copy模块的copy()函数或者对象的copy()方法来......
  • python调用java的jar包,在scrapy中处理加密逻辑
    APP采集过程中有些请求是需要加密处理的,之前的方式是通过frida-inject的方式处理的,但是这需要连接手机,好在本次处理的APP加密逻辑不是很复杂,加密逻辑都在java层,于是便将里面的java层的加密逻辑单独摘出来,想单独的做成一个jar包,这样就不用再用python做一个相同的算法还原了经过半......
  • [oeasy]python0085_[趣味拓展]字体样式_下划线_中划线_闪动效果_反相_取消效果
    字体样式回忆上次内容\033xm可以改变字体样式0m-10m之间设置的都是字体效果0m复原1m变亮2m变暗从3m到10m又是什么效果呢??真的可以让文字blink闪烁吗?......
  • 记录Python调用企业微信报错"errcode":44004,"errmsg":"Warning: wrong json format.
    1.通过单独的文件调用接口发送消息无异常;2.通过嵌套调用接口报错:"errcode":44004,"errmsg":"Warning:wrongjsonformat.;3.检查json文本格式无异常;4.怀疑json文本赋值有问题,增加trycache捕获,没有报错,但是可以正常调用接口!!5.打印json文本,比对trycatch的区别,发现多了个空格,依葫......
  • Python game engine framework All In One
    PythongameengineframeworkAllInOneRen'PyRen'Py视觉小说引擎是一款开放源代码的自由软件引擎,用来创作透过电脑叙述故事的视觉小说。Ren'Py之名是Ren'ai与Python两词混合而成。Ren'ai为日文,意指“恋爱”,而Python是Ren'Py所使用的语言环境。和其他流行的视觉小说......
  • [oeasy]python0085_[趣味拓展]字体样式_下划线_中划线_闪动效果_反相_取消效果
    字体样式回忆上次内容\033xm可以改变字体样式0m-10m之间设置的都是字体效果0m复原1m变亮2m变暗  ​ 添加图片注释,不超过140字(可选) 从3m到10m又是什么效果呢?? ​ 添加图片注释,不超......