问题标签 [abc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
607 浏览

python - 如何结合 wxPython、abc 和元类 mixin?

我有一个基类,其他类应该继承它:

基类没有(也不能)实现_PopulateToolbar();它应该是一个抽象方法。因此,我认为 usingabc是一个很好的计划,所以我尝试了这个:

也许不出所料,尝试运行它会导致TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases. 我想,“哦,对,我就用一个 mixin”:

没有变化:仍然是相同的TypeError消息。我怀疑我在使用ABCMeta这里时遗漏了一些明显的东西;这看起来不像是 wxPython 特有的错误。我究竟做错了什么?有没有更好的方法来解决同样的问题?

编辑:在与一位同事的对话中向我指出,不能混合元类。由于wx.ToolBar显然源自sip.wrappertype,因此似乎没有办法做到这一点。在这里处理“抽象方法”方法的另一种仍然是 Pythonic 的方法是什么?

0 投票
1 回答
965 浏览

python - 如何在 Sphinx 文档中将成员注释为摘要?

autodoc以下两个属性定义在 Sphinx HTML 输出中显示完全相同:

Sphinx 有办法用某种标识符注释抽象方法吗?我希望在我的文档中清楚地表明我的 ABC 的哪些成员需要实现,以及一旦定义了所需的那些是你得到的 mixin 免费赠品。

0 投票
1 回答
109 浏览

c++ - 抽象基类未正确返回

我仍然没有完全理解抽象基类。这是我为我的作业创建的,它似乎主要工作,除了它不会返回通过派生类添加的任何内容。每当我选择 hasDMA 或缺少DMA 时,我都没有从颜色或样式返回结果。

主文件

DMA.cpp

DMA.h

0 投票
0 回答
64 浏览

python - 区分抽象基类和实现

开发一个提供子类自注册的元类(有点类似于这个想法),我遇到了以下问题:

给定一个可能是抽象基类或实现的类,我如何区分它是哪一个?

0 投票
5 回答
5981 浏览

python - 抽象方法上的装饰器

在python中,有没有办法让抽象方法上的装饰器传递到派生实现?

例如,在

SubFoo据我所知,它my_method不会被装饰。some_decorator有没有什么方法可以做到这一点,而不必单独装饰每个派生类Foo

0 投票
2 回答
1701 浏览

python - 查找类注册的所有抽象基类

如何找到给定类是“虚拟子类”的所有抽象基类?

换句话说,我正在寻找一个可以执行以下操作的魔术函数virtual_base_classes()

(我不知道注册的所有abclist,所以上面的例子可能不完整。)

请注意,并非每个抽象基类都将在collections.abc. 有一个提供元类的模块abc(不同于) 。任何作为实例的类都支持使用标准接口(方法)注册“虚拟子类” 。没有什么可以阻止某人(无论是程序员还是 Python 库)创建不属于.collections.abcABCMetaABCMetaregisterABCMetacollections.abc

0 投票
1 回答
1546 浏览

python - mro 方法和类的 __mro__ 属性有什么区别?

mro在使用__metaclass__ = abc.ABCMeta. __mro__除了它返回一个列表而不是一个元组之外,它似乎相同。这是一个随机示例(ideone 片段):

后来我发现这不是唯一的,ABCMeta而是在所有新式类中都可用。

所以为什么?这不是做什么__mro__

0 投票
1 回答
1408 浏览

python - 继承setter,覆盖python抽象类中的getter

假设您在基类中有一个属性,该属性具有setter将在所有子类中使用的单个方法,但在所有子类中具有不同getter的方法。理想情况下,您只想setter在基类中为该方法编写一次代码。此外,您想让基类抽象,因为它没有完整的getter方法。有没有办法做到这一点?

天真地,我认为它应该是这样的:

但是upper = uppercase()失败了Can't instantiate abstract class uppercase with abstract methods str

如果我将@abc.abstractpropertyin class更改_mystring@property, 那么upper = uppercase()可以,但是upper = _mystring(), 我不想要的。

我错过了什么?

谢谢!

0 投票
1 回答
1163 浏览

python - Python 集合.MappingView

我正在查看非常好的集合库,更具体的是抽象基类(ABC)。我无法理解的一个:MappingView。

  • 它的用途是什么?它比 Sized 有什么优势?也许是一个例子?
  • 文档说它的基类是 Sized,但另一方面有一个len mixin ......那么我们是否必须实现len

有关文档,请参阅集合

0 投票
1 回答
980 浏览

python - Can python abstract base classes inherit from C extensions?

It seems as if that when I have an abstract base class that inherits from gevent.Greenlet (which inherits from the C extension module greenlet: https://github.com/python-greenlet/greenlet) then classes that implement it do not raise any of the abc errors about unimplemented methods.

If I inherit from object it fails as expected:

What is the right way to implement this functionality?