2013-03-18 15 views
5

Dies ist, was ich suche:Python * args Umwandlung zur Liste

def __init__(self, *args): 
    list_of_args = #magic 
    Parent.__init__(self, list_of_args) 

I * args zu einem einzigen Array übergeben werden müssen, so dass:

MyClass.__init__(a, b, c) == Parent.__init__([a, b, c]) 
+0

Sie meinen: 'Parent .__ init __ (Liste (Argumente))'? – isedev

+1

Sie brauchen wahrscheinlich keine * list *, sondern eine Sequenz. 'args' ist bereits ein Tupel – JBernardo

Antwort

7

Nichts zu Magie:

def __init__(self, *args): 
    Parent.__init__(self, list(args)) 

Innerhalb von __init__, die Variable args ist nur ein Tupel mit allen möglichen Argumenten, die übergeben wurden In der Tat können Sie wahrscheinlich einfach Parent.__init__(self, args) verwenden, es sei denn, Sie benötigen es wirklich, um eine Liste zu sein.

Als Randnotiz ist die Verwendung von super() gegenüber Parent.__init__() vorzuziehen.