【发布时间】:2017-12-01 17:02:49
【问题描述】:
我正在尝试使用具有默认行为的构造函数声明一个抽象类A:所有子类都必须初始化一个成员self.n:
from abc import ABCMeta
class A(object):
__metaclass__ = ABCMeta
def __init__(self, n):
self.n = n
但是,我不想让A 类被实例化,因为它是一个抽象类。问题是,这实际上是允许的:
a = A(3)
这不会产生任何错误,而我希望它应该如此。
那么:如何在为构造函数定义默认行为的同时定义不可实例化的抽象类?
【问题讨论】:
-
从技术上讲,抽象类不应该被实例化,因为它们作为蓝图工作。如果你想回顾一下,很多材料都指向这个概念。以下是一些:en.wikipedia.org/wiki/Abstract_type 和 python-course.eu/python3_abstract_classes.php。无论如何,我感谢您指出需要为抽象类定义构造函数,这对于具体类可能很方便。谢谢:)。
标签: python python-2.7 oop abstract-class