微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

抽象类元类=ABCMeta和抽象类ABC之间的区别

如何解决抽象类元类=ABCMeta和抽象类ABC之间的区别

我见过两种在 python 中定义抽象类的方法。有什么区别,各自的使用场景是什么?

from abc import ABCMeta,abstractmethod
class AbstactClass(Metaclass = ABCMeta):

from abc import ABC,abstractmethod
class AbstractClass2(ABC):

解决方法

没有实际的功能差异。 ABC 类只是一个方便的类,可帮助那些不太了解元类概念的人使代码看起来不那么混乱,如 documentation 所述:

以 ABCMeta 作为元类的辅助类。有了这个班级, 可以通过简单地从 ABC 派生来创建抽象基类 避免有时混淆元类的用法

看一下abc.py的实现就更清楚了,它只不过是一个空类,指定了ABCMeta作为它的元类,这样它的后代就可以继承该类型:

class ABC(metaclass=ABCMeta):
    """Helper class that provides a standard way to create an ABC using
    inheritance.
    """
    __slots__ = ()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。