2012-02-18 11 views
0

method2には、method1に渡されるものと同じ内容のkwargsが必要です。この場合、 "foo"はmethod1に渡されますが、任意の値を渡して、method1とmethod2の両方のkwargsで参照します。私がmethod2をどのように呼び出すかとは違ったやり方が必要ですか?メソッド1はメソッド2にkwargsを渡すことはできますか?

def method1(*args,**kwargs): 

    if "foo" in kwargs: 
     print("method1 has foo in kwargs") 

    # I need to do something different here 
    method2(kwargs=kwargs) 

def method2(*args,**kwargs): 

    if "foo" in kwargs: 
     # I want this to be true 
     print("method2 has foo in kwargs") 

method1(foo=10) 

出力:

method1 has foo in kwargs 

所望の出力:

method1 has foo in kwargs 
method2 has foo in kwargs 

は私が求めているものを明確にする必要がある場合は、私に教えてください、またはこれが不可能な場合。

答えて

2
def method1(*args,**kwargs): 
    if "foo" in kwargs: 
     print("method1 has foo in kwargs") 

    method2(**kwargs) 
1

これは、引数リストを開梱と呼ばれています。 python.orgのドキュメントはhereです。あなたの例では、このように実装します。

def method1(*args,**kwargs):  
    if "foo" in kwargs:   
     print("method1 has foo in kwargs")  

    # I need to do something different here  
    method2(**kwargs) #Notice the **kwargs. 

def method2(*args,**kwargs):  
    if "foo" in kwargs:   # I want this to be true   
     print("method2 has foo in kwargs") 

method1(foo=10) 
関連する問題