gpt4 book ai didi

python - 如何在 Python 中为抽象类定义构造函数实现?

转载 作者:IT老高 更新时间:2023-10-28 21:01:06 28 4
gpt4 key购买 nike

我正在尝试使用具有默认行为的构造函数声明一个抽象类 A:所有子类都必须初始化一个成员 self.n:

from abc import ABCMeta

class A(object):
__metaclass__ = ABCMeta

def __init__(self, n):
self.n = n

但是,我不想让 A 类被实例化,因为它是一个抽象类。问题是,这实际上是允许的:

a = A(3)

这不会产生任何错误,而我希望它应该如此。

那么:如何在为构造函数定义默认行为的同时定义不可实例化的抽象类?

最佳答案

使 __init__ 成为抽象方法:

from abc import ABCMeta, abstractmethod

class A(object):
__metaclass__ = ABCMeta

@abstractmethod
def __init__(self, n):
self.n = n


if __name__ == '__main__':
a = A(3)

帮助:

TypeError: Can't instantiate abstract class A with abstract methods __init__

Python 3 版本:

from abc import ABCMeta, abstractmethod

class A(object, metaclass=ABCMeta):

@abstractmethod
def __init__(self, n):
self.n = n


if __name__ == '__main__':
a = A(3)

同样有效:

TypeError: Can't instantiate abstract class A with abstract methods __init__

关于python - 如何在 Python 中为抽象类定义构造函数实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44800659/

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