问题标签 [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.
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 的方法是什么?
python - 如何在 Sphinx 文档中将成员注释为摘要?
autodoc
以下两个属性定义在 Sphinx HTML 输出中显示完全相同:
Sphinx 有办法用某种标识符注释抽象方法吗?我希望在我的文档中清楚地表明我的 ABC 的哪些成员需要实现,以及一旦定义了所需的那些是你得到的 mixin 免费赠品。
c++ - 抽象基类未正确返回
我仍然没有完全理解抽象基类。这是我为我的作业创建的,它似乎主要工作,除了它不会返回通过派生类添加的任何内容。每当我选择 hasDMA 或缺少DMA 时,我都没有从颜色或样式返回结果。
主文件
DMA.cpp
DMA.h
python - 区分抽象基类和实现
开发一个提供子类自注册的元类(有点类似于这个想法),我遇到了以下问题:
给定一个可能是抽象基类或实现的类,我如何区分它是哪一个?
python - 抽象方法上的装饰器
在python中,有没有办法让抽象方法上的装饰器传递到派生实现?
例如,在
SubFoo
据我所知,它my_method
不会被装饰。some_decorator
有没有什么方法可以做到这一点,而不必单独装饰每个派生类Foo
?
python - 查找类注册的所有抽象基类
如何找到给定类是“虚拟子类”的所有抽象基类?
换句话说,我正在寻找一个可以执行以下操作的魔术函数virtual_base_classes()
:
(我不知道注册的所有abc
类list
,所以上面的例子可能不完整。)
请注意,并非每个抽象基类都将在collections.abc
. 有一个提供元类的模块abc
(不同于) 。任何作为实例的类都支持使用标准接口(方法)注册“虚拟子类” 。没有什么可以阻止某人(无论是程序员还是 Python 库)创建不属于.collections.abc
ABCMeta
ABCMeta
register
ABCMeta
collections.abc
python - mro 方法和类的 __mro__ 属性有什么区别?
我mro
在使用__metaclass__ = abc.ABCMeta
. __mro__
除了它返回一个列表而不是一个元组之外,它似乎相同。这是一个随机示例(ideone 片段):
后来我发现这不是唯一的,ABCMeta
而是在所有新式类中都可用。
所以为什么?这不是做什么__mro__
?
python - 继承setter,覆盖python抽象类中的getter
假设您在基类中有一个属性,该属性具有setter
将在所有子类中使用的单个方法,但在所有子类中具有不同getter
的方法。理想情况下,您只想setter
在基类中为该方法编写一次代码。此外,您想让基类抽象,因为它没有完整的getter
方法。有没有办法做到这一点?
天真地,我认为它应该是这样的:
但是upper = uppercase()
失败了Can't instantiate abstract class uppercase with abstract methods str
。
如果我将@abc.abstractproperty
in class更改_mystring
为@property
, 那么upper = uppercase()
可以,但是upper = _mystring()
, 我不想要的。
我错过了什么?
谢谢!
python - Python 集合.MappingView
我正在查看非常好的集合库,更具体的是抽象基类(ABC)。我无法理解的一个:MappingView。
- 它的用途是什么?它比 Sized 有什么优势?也许是一个例子?
- 文档说它的基类是 Sized,但另一方面有一个len mixin ......那么我们是否必须实现len?
有关文档,请参阅集合
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?