访问__init__参数

los*_*ost 0 python

是否可以访问传递给它的参数__init__,而无需显式存储它们?

例如

class thing(object):
  def __init__(self, name, data):
    pass # do something useful here

t = thing('test', [1,2,3,])
print t.__args__ # doesn't exist

>> ('test', [1,2,3])
Run Code Online (Sandbox Code Playgroud)

用例是创建一个超类,它可以自动存储用于创建从中派生的类实例的参数,而不必将所有参数显式传递给超类__init__.也许有一种更容易的方法!

Sve*_*ach 8

不,你必须存储它们.否则它们在__init__()返回后消失,作为所有局部变量.

如果您不想显式传递所有参数,可以使用**kwargs:

class Base(object):
    def __init__(self, name, data):
        # store name and data

class Derived(Base):
    def __init__(self, **kwargs):
        Base.__init__(self, **kwargs)

Derived(name="Peter", data=42)
Run Code Online (Sandbox Code Playgroud)