Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:派生类中的不同构造函数占用空间_Python_Inheritance_Constructor_Abstract Class - Fatal编程技术网

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

Python:派生类中的不同构造函数占用空间,python,inheritance,constructor,abstract-class,Python,Inheritance,Constructor,Abstract Class,如何在Python中的派生类中使用不同的构造函数 如果我尝试这样的方法: from abc import ABCMeta, abstractproperty, abstractmethod class AbstractClass(object): __metaclass__ = ABCMeta def __init__(self): pass 及 我明白了 TypeError: Error when calling the metaclass bases m

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

如果我尝试这样的方法:

from abc import ABCMeta, abstractproperty, abstractmethod

class AbstractClass(object):
    __metaclass__ = ABCMeta

    def __init__(self):
        pass

我明白了

TypeError: Error when calling the metaclass bases
module.__init__() takes at most 2 arguments (3 given)
我想做一些像

if (cl_param == '1'):
  obj = DerivedClass1('1', 'c')
else if (cl_param == '2'):
  obj = DerivedClass2('2', 'foo', 2)
class Entry(models):
    content = models.TextField()
    pub_date = models.DateTimeField()

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

确保从类而不是模块继承

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

错误在于从模型继承了我的模型。模型

我有点像

if (cl_param == '1'):
  obj = DerivedClass1('1', 'c')
else if (cl_param == '2'):
  obj = DerivedClass2('2', 'foo', 2)
class Entry(models):
    content = models.TextField()
    pub_date = models.DateTimeField()
应该是什么时候

class Entry(models.Model):
    content = models.TextField()
    pub_date = models.DateTimeField()

请注意缺少的模型。Model

您如何调用
DerivedClass
构造函数以使其产生错误?与我在上一个代码段中所做的非常相似(到目前为止,我只有一个派生类,所以我还没有if-else构造)。我有self+3个参数,我把它叫做“obj=DerivedClass('1','2','3')。你可以看到你定义它只接受一个参数,而不是实例,对吗?我不太明白你的意思。如果我改变了DerivedClass,而不是从基类派生,那么对象的创建就起作用了。所以继承不象C++那样工作,在那里你可以有多个不同的脚印的构造函数。我没有意识到。