0

这是我在这里提出的一个问题的后续,但我当时并没有真正知道足够清楚......

所以,我有一个基类和一个派生类。基类需要知道用于创建派生类实例的参数(这样它就可以将它们存储到磁盘上,我们以后可以重新创建派生实例)。基类本身不需要带任何参数。

显而易见的方法是要求派生类的开发人员将其参数传递给基类__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
4

0 回答 0