abc相关内容

使用ABC混合的命名元组类

我的问题如下:我想创建一个继承自tying.NamedTuple的类和抽象类中的另一个混合类。理想情况下,我希望这样做: from typing import * from abc import ABC, abstractmethod class M(ABC): @abstractmethod def m(self, it: Iterable[str]) -> str: ..
发布时间:2022-03-25 21:51:04 Python

Python - 测试抽象基类

我正在寻找有关在抽象基类中定义的测试方法的方法/最佳实践.我可以直接想到的一件事是对基类的所有具体子类执行测试,但有时这似乎有些过分. 考虑这个例子: 导入 abc抽象类(对象):__元类__ = abc.ABCMeta@abc.abstractproperty定义 ID(自己):返回@abc.abstractmethoddef foo(self):打印“foo"定义栏(自我):打印“条" ..
发布时间:2021-12-15 11:44:25 Python

确定 Python 类是抽象基类还是具体类

我的 Python 应用程序包含许多抽象类和实现.例如: import abc导入日期时间类消息显示(对象):__元类__ = abc.ABCMeta@abc.abstractproperty定义显示(自我,消息):经过类 FriendlyMessageDisplay(MessageDisplay):定义问候(自我):小时 = datetime.datetime.now().timetuple( ..
发布时间:2021-11-26 17:04:16 Python

Python与抽象方法的不同行为

我有两个类继承自同一个父P: from abc import ABCMeta, abstractmethodP类(对象):__元类__ = ABCMeta@抽象方法def foo(self):经过C(P)类:经过D类(元组,P):经过 唯一的区别是D继承自tuple和P,而C继承自P 仅. 现在这是行为:c = C() 出现错误,正如预期的那样: TypeError: 不能用抽象方法 ..
发布时间:2021-11-26 17:00:15 Python

使用@abstractproperty 和@abstractmethod 实现/覆盖的实际差异

考虑一个带有函数的抽象基类,您希望每个后续子类都覆盖该函数.使用 abc 模块和 ABCMeta;使用 @abstractproperty 或 @abstractmethod 进行装饰是否会强制子类/开发人员实现创建由装饰器指定的函数类型?根据我的实验,您可以使用方法覆盖抽象属性,并使用子类中的属性覆盖抽象方法. 这个概念不正确吗? 解决方案 这个概念是正确的;ABCMeta 代码不 ..
发布时间:2021-11-26 16:34:34 Python

将单例实现为元类,但用于抽象类

我有一个抽象类,我想为从我的抽象类继承的所有类实现单例模式.我知道我的代码不会工作,因为会有元类属性冲突.任何想法如何解决这个问题? from abc import ABCMeta,abstractmethod,abstractproperty单例类(类型):_实例 = {}def __call__(cls, *args, **kwargs):如果 cls 不在 cls._instances 中 ..
发布时间:2021-11-25 09:53:41 Python

确定 Python 类是抽象基类还是具体类

我的 Python 应用程序包含许多抽象类和实现.例如: import abc导入日期时间类消息显示(对象):__元类__ = abc.ABCMeta@abc.abstractproperty定义显示(自我,消息):经过类 FriendlyMessageDisplay(MessageDisplay):定义问候(自我):小时 = datetime.datetime.now().timetuple( ..
发布时间:2021-11-25 09:36:02 Python

Python与抽象方法的不同行为

我有两个类继承自同一个父P: from abc import ABCMeta, abstractmethodP类(对象):__元类__ = ABCMeta@抽象方法def foo(self):经过C(P)类:经过D类(元组,P):经过 唯一的区别是D继承自tuple和P,而C继承自P 仅. 现在这是行为:c = C() 出现错误,正如预期的那样: TypeError: 不能用抽象方法 ..
发布时间:2021-11-25 09:32:39 Python

使用@abstractproperty 和@abstractmethod 实现/覆盖的实际差异

考虑一个带有函数的抽象基类,您希望每个后续子类都覆盖该函数.使用 abc 模块和 ABCMeta;使用 @abstractproperty 或 @abstractmethod 进行装饰是否实际上强制子类/开发人员实现创建由装饰器指定的函数类型?根据我的实验,您可以使用方法覆盖抽象属性,并使用子类中的属性覆盖抽象方法. 这个概念不正确吗? 解决方案 这个概念是正确的;ABCMeta 代 ..
发布时间:2021-11-25 09:04:45 Python

是否有可能成为内置类型的虚拟子类?

是否可以使用户定义的类型成为 Python 中内置类型的虚拟子类?我希望我的类被视为 int 的子类,但是我不想像这样直接继承: class MyInt(int):'''做一些类似于 int 的事情,但不完全是'''经过 从那时起,无论我是否愿意,我的班级都变得有效不可变.例如,不可能使用像 __iadd__ 和 __isub__ 这样的方法,因为 int 无法修改自身.我可以从 number ..
发布时间:2021-08-31 19:55:01 Python

抽象方法上的装饰器

在python中,有没有一种方法可以使抽象方法上的装饰器传递给派生的实现? 例如,在 导入abcFoo类(对象):__metaclass__ = abc.ABCMeta@ abc.abstractmethod@some_decoratordef my_method(self,x):经过SubFoo(Foo)类:def my_method(self,x):打印x 据我所知, SubFo ..
发布时间:2021-04-29 20:42:30 Python

从ABC和django.db.models.Model继承都会引发元类异常

我正在尝试使用Python 3实现Django数据模型类,这也是一个接口类。这样做的原因是,我正在为我的同事编写一个基类,并且需要他实现三种方法在所有课程中,他都是我的。我正在尝试为他提供一种简化的方式来使用我设计的系统的功能。但是,他必须重写一些方法,以便为系统提供足够的信息以执行其继承的类中的代码。 我知道这是错误的,因为它会引发异常,但是我想拥有一个类似以下示例的类: 从djan ..
发布时间:2020-06-04 18:42:10 其他开发

abc.abstractmethod +属性

根据 docs ,它应该可以结合使用 @property 和 @ abc.abstractmethod ,因此以下内容应在python3.3中起作用: 导入abc 类FooBase(metaclass = abc.ABCMeta): @属性 @abc .abstractmethod def greet(自己): 必须实例化“ b”“”“才能实例化”“” pass ..
发布时间:2020-06-04 18:42:05 Python

mro方法和类的__mro__属性之间有什么区别?

当我使用 __ metaclass__ = abc.ABCMeta 时,偶然发现了这种多余的,不加下划线的 mro 方法。它似乎与 __ mro __ 相同,只是它返回一个列表而不是一个元组。这是一个随机示例( ideone片段): 导入abc 导入副本 类寿命(对象): __metaclass__ = abc.ABCMeta @abc .abstractmethod d ..
发布时间:2020-06-04 18:42:01 Python

python @abstractmethod装饰器

我已阅读有关抽象基类的python文档: 来自此处: abc.abstractmethod(function) 指示抽象方法的装饰器。 使用该装饰器要求该类的元类为 ABCMeta 或 从中得出。除非实例化了其所有抽象方法和 属性,否则无法实例化具有源自 ABCMeta 的元类的类。 和此处 您可以应用 @abstractmethod 装饰器,必须执行诸如dr ..
发布时间:2020-06-04 18:41:53 Python

什么是“几乎为空”?类?

编译以下类 class接口 { virtual void doIt()= 0; virtual〜Interface()= 0; }; 内联接口::〜Interface(){} 使用 gcc -fdump-class-hierarchy 。 gcc 发出 类接口 size = 4 align = 4 base size = 4 ..
发布时间:2020-06-04 18:41:49 C/C++开发

从覆盖率报告中排除abstractproperties

我有一个类似的抽象基类: class MyAbstractClass(object): __metaclass__ = ABCMeta @abstractproperty def myproperty(self):通过 但是,当我在项目上进行鼻子测试(覆盖率)时,它抱怨未定义属性def行。不能实际上进行测试(AFAIK),因为抽象类的实例化将导致引发异常。 ..
发布时间:2020-06-04 18:41:47 Python