311得票6回答
为什么在Python中使用抽象基类?

因为我习惯于使用 Python 中的旧式鸭子类型,所以我不理解为什么需要 ABC(抽象基类)。文档介绍了如何使用它们。 我试图阅读PEP中的理论基础,但是我没能理解。如果我正在寻找一个可变序列容器,我会检查是否有 __setitem__ ,或者更可能尝试使用它(EAFP)。 我没有遇到过真实...

103得票2回答
Python中的@abstractmethod装饰器

我已经阅读了Python文档关于抽象基类的部分: 从这里: abc.abstractmethod(function) 表示抽象方法的装饰器。 使用此装饰器要求类的元类是ABCMeta或者派生自它。一个有元类派生自ABCMeta的类,除非其所有抽象方法和属性都被覆盖否则不...

68得票6回答
Python - 测试抽象基类

我正在寻找有关测试抽象基类中定义的方法的方法/最佳实践。我能够直接想到的一件事是对基类的所有具体子类执行测试,但有时这似乎过于繁琐。 考虑以下示例:import abc class Abstract(object): __metaclass__ = abc.ABCMeta ...

60得票4回答
如何在Python 2.7和Python 3.5兼容的情况下使用abc.ABCMeta?

我想创建一个类,它的元类是abc.ABCMeta,并且可以同时兼容Python 2.7和Python 3.5。到目前为止,我只能在2.7或3.5上成功创建,但从未在两个版本上同时成功。有人可以帮我吗? Python 2.7: import abc class SomeAbstractCla...

52得票4回答
排除抽象属性在覆盖率报告中的统计

我有一个类似于下面这样的抽象基类:class MyAbstractClass(object): __metaclass__ = ABCMeta @abstractproperty def myproperty(self): pass 当我在我的项目上运行nosetes...

48得票3回答
确定一个Python类是抽象基类还是具体类。

我的Python应用程序包含许多抽象类和实现。例如: import abc import datetime class MessageDisplay(object): __metaclass__ = abc.ABCMeta @abc.abstractproperty ...

44得票6回答
如何检查numpy的dtype是否为整型?

我该如何检查numpy的数据类型是否为整数?我尝试了:issubclass(np.int64, numbers.Integral) 但它返回 False。 更新:现在它返回True。

40得票2回答
具有不同参数数量的抽象类

我在想,如果创建一个带有抽象方法的抽象类,是否可以允许派生类中实现这些方法时每个函数具有不同数量的参数? 我目前的抽象类如下:from abc import ABCMeta, abstractmethod class View(metaclass=ABCMeta): @abstra...

39得票6回答
抽象方法上的装饰器

在 Python 中,是否有一种方法可以使抽象方法上的装饰器应用于其派生实现中? 例如,在:import abc class Foo(object): __metaclass__ = abc.ABCMeta @abc.abstractmethod @some_de...

32得票2回答
如何使一个抽象类从另一个抽象类继承在Python中?

在Python中,一个抽象类是否可以继承另一个抽象类? 如果可以,应该如何做到这一点?