gpt4 book ai didi

python - 实例化抽象类时没有错误,即使没有实现抽象方法

转载 作者:行者123 更新时间:2023-11-28 21:52:13 24 4
gpt4 key购买 nike

我正在尝试下面的 python 代码:

from abc import ABCMeta, abstractmethod

class Bar:

__metaclass__ = ABCMeta

@abstractmethod
def foo(self):
pass


class Bar2(Bar):
def foo2(self):
print("Foo2")


b = Bar()
b2 = Bar2()

我认为 @abstractmethod 将确保我的父类是抽象的,子类也将是抽象的,因为它没有实现抽象方法。但是在这里,我在尝试实例化这两个类时没有遇到任何错误。

谁能解释一下为什么?

最佳答案

您必须将Bar 类的设置元类ABCMeta

python 2:

class Bar:
__metaclass__ = ABCMeta

@abstractmethod
def foo(self):
pass

python 3:

class Bar(object, metaclass=ABCMeta):
@abstractmethod
def foo(self):
pass

关于python - 实例化抽象类时没有错误,即使没有实现抽象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28688784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com