__abstractmethods__和AttributeError

__abstractmethods__和AttributeError,第1张

__abstractmethods__和AttributeError

__abstractmethods__
是支持抽象基类的描述符;
它包装了默认情况下为空的 插槽
(因此描述符会引发属性错误)。最重要的是,它是CPython处理抽象方法的实现细节。
__


该属性用于跟踪抽象的方法,因此,如果实例未提供具体的实现,则可以阻止实例的创建:

>>> import abc>>> class FooABC(metaclass=abc.ABCmeta):...     @abc.abstractmethod...     def bar(self):...         pass... >>> FooABC.__abstractmethods__frozenset({'bar'})>>> class Foo(FooABC): pass... >>> Foo()Traceback (most recent call last):  File "<stdin>", line 1, in <module>TypeError: Can't instantiate abstract class Foo with abstract methods bar

abc.ABCmeta
实现将设置
__abstractmethods__
属性,并
type()
使用它来检查应该已经实现但尚未实现的任何抽象方法。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5617463.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-15
下一篇2022-12-15

发表评论

登录后才能评论

评论列表(0条)

    保存