後で呼び出すために、両方のargs & kwargsをタプルに格納する必要があります。その場合、タプル* argsまたはargsに適切な値が入りますか?言い換えれば、この作業になります。** kwargsとkwargs(* argsとargs)はいつ使用しますか?
def __init__(self, *args, **kwargs):
self._buildCalls = [
(self.__init__, args, kwargs)
]
self._building = False
def __getattr__(self, attr):
if self.building():
if hasmethod(self, attr):
return lambda *args, **kwargs: self.argSaver(attr, *args, **kwargs)
else:
return super().__getattr__(attr)
def argSaver(self, method, *args, **kwargs):
self._buildCalls.append((method, args, kwargs))
return method(*args, **kwargs)
試してみましたか?それはうまくいったのですか? – AChampion
例題は[here](http://stackoverflow.com/q/40498298/4014959)の回答を参考にしてください。 –
'*'と '**'が何をしているのかあなたが実際に理解しているとは思えません。しかし、はい、タプルに 'args'と' kwargs'を格納しなければなりません。 '* args'と' ** kwargs'はあなたが格納できる実際のものではありません(それぞれ 'args'と' kwargs'に別の演算子を実行するだけです)。 – poke