这是我在这里提出的一个问题的后续,但我当时并没有真正知道足够清楚......
所以,我有一个基类和一个派生类。基类需要知道用于创建派生类实例的参数(这样它就可以将它们存储到磁盘上,我们以后可以重新创建派生实例)。基类本身不需要带任何参数。
显而易见的方法是要求派生类的开发人员将其参数传递给基类__init__()
。但是,如果可能的话,我想让它更加自动化;出现不匹配是一个简单的错误,基类的全部意义在于对那些开发派生类的人隐藏机器。
我想出了这个解决方案 - 这种方法有什么问题吗?
class Base(object):
def __new__(typ, *args, **kwargs):
obj = object.__new__(typ)
obj._args = args
obj._kwargs = kwargs
return obj
class Derived(Base):
def __init__(self, arg1, arg2):
pass # obviously will do stuff here
inst = Derived('salt', arg2='pepper')
print inst, inst._args, inst._kwargs