Python:派生类中的不同构造函数占用空间

Mak*_*kis 3 python inheritance constructor abstract-class

如何在Python的派生类中使用不同的构造函数?

如果我尝试这样的事情:

from abc import ABCMeta, abstractproperty, abstractmethod

class AbstractClass(object):
    __metaclass__ = ABCMeta

    def __init__(self):
        pass
Run Code Online (Sandbox Code Playgroud)

import AbstractClass

class DerivedClass(AbstractClass):

    _prop = ''
    def __init__(self, param):
        self._prop = param
Run Code Online (Sandbox Code Playgroud)

我明白了

TypeError: Error when calling the metaclass bases
module.__init__() takes at most 2 arguments (3 given)
Run Code Online (Sandbox Code Playgroud)

我想做点什么

if (cl_param == '1'):
  obj = DerivedClass1('1', 'c')
else if (cl_param == '2'):
  obj = DerivedClass2('2', 'foo', 2)
Run Code Online (Sandbox Code Playgroud)

等等.接口的其余部分在每个类中都是相似的,它们只需要不同的初始化参数.或者我是否必须通过在列表中提供参数来规避这一点?

Pra*_*mod 8

确保从类而不是模块继承.

使用django模型时,我收到了相同的错误消息

错误在于从models.Model继承我的模型

我有类似的东西

class Entry(models):
    content = models.TextField()
    pub_date = models.DateTimeField()
Run Code Online (Sandbox Code Playgroud)

什么时候应该

class Entry(models.Model):
    content = models.TextField()
    pub_date = models.DateTimeField()
Run Code Online (Sandbox Code Playgroud)

注意缺少的models.Model