2017-02-28 9 views
3

サブクラスを作成できるクラスを作成したいと思います。そのサブクラスには、特定の条件でのみ印刷する印刷機能があります。ここで関数のすべての引数を別の関数に渡す

は、私が何をしようとしている基本的にです:

class ClassWithPrintFunctionAndReallyBadName: 
    ... 
    def print(self, *args): 
     if self.condition: 
      print(*args) 

これは、そのようなend(例として、明示的にデフォルトprint機能を明記する必要がある引数は、存在するという事実を除いてすでに動作します: print('Hello, world!', end=''))。私の新しいクラスのprint関数はend=''のような引数を受け入れ、それらをデフォルトのprintに渡すことができますか?

+1

あなたは '** kwargs'を使用することができます –

答えて

5

@JohnColemanがで示唆したように、すべての引数に渡すための標準的な方法がありますコメント:

ClassWithPrintFunctionAndReallyBadName: 
    ... 
    def print(self, *args, **kwargs): 
     if self.condition: 
      print(*args, **kwargs) 

argsは非キーワード(定位)引数のタプルであり、kwargsはキーワード引数の辞書です。

1

メソッドシグネチャの名前付き引数を複製するだけです。

def print(self, *args, end='\n', sep=' ', flush=False, file=None): 
    if self.condition: 
     print(*args, end=end, sep=sep, flush=flush, file=file) 
+0

もし誰かが私にこの答えを間違って教えてくれたら、それはダウンボートに値するものです。 – TigerhawkT3

+0

あなたの答えは問題の手元にあります。時折ダウンボントを理解することは難しいです。 –

+0

ランダムディスパーザーに襲われた:<あなたが何かを嫌いなのであればコメントしなければならないと感じ、そうでなければ「自分のコードはうまくいかない」という質問には役に立たない –

1

引数が動的またはあまりにも多くの場合はこの

def print(self, *args, end=''): 

のように末尾に追加します。

def print(self, *args, **kwargs): 
関連する問題