如何在Python的派生类中有不同的构造函数?Python:派生类中的不同构造函数足迹
如果我尝试这样:
from abc import ABCMeta, abstractproperty, abstractmethod
class AbstractClass(object):
__metaclass__ = ABCMeta
def __init__(self):
pass
和
import AbstractClass
class DerivedClass(AbstractClass):
_prop = ''
def __init__(self, param):
self._prop = param
我得到
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)
等。接口的其余部分在每个类中都是相似的,它们只需要不同的初始化参数。或者我必须通过给列表中的参数来绕过这个问题?
你是如何调用DerivedClass构造函数使其发出错误的? –
非常像我在最后的代码片段(我迄今只有一个派生类,所以我没有if-else构造呢)。我有自我+三个参数,我称之为“obj = DerivedClass('1','2','3')”。 – Makis
你确实看到你已经定义它只接受一个实例以外的参数,对吧? –