重複の可能性:
Python の「最小の驚き」: 変更可能な既定の引数
class Klass(object):
def a(self, d={}):
print d
self.b(d)
def b(self, d={}):
import random
print d
d[str(random.random())] = random.random()
引数なしで呼び出すたびにc.a()
、新しい empty が得られると思いましたdict
。ただし、これは実際に起こることです:
>>> c = Klass()
>>> c.a()
{}
{}
>>> c.a()
{'0.637151613258': 0.61491180520119226}
{'0.637151613258': 0.61491180520119226}
>>> c.a()
{'0.637151613258': 0.61491180520119226, '0.960051474644': 0.54702415744398669}
{'0.637151613258': 0.61491180520119226, '0.960051474644': 0.54702415744398669}
...
lambda
私は本当にある種の/ことをしたくありませんiscallable
。ここで使用するのに適したパターンは何ですか?
もちろん、質問を入力し始める頃には、問題をうまく回避できていることがわかりました。しかし、誰かがこれを回避する別のペットの方法を持っている場合は、ぜひ聞きたい.