デコレータを使用してメソッドに属性を追加しようとしています。なぜこのエラーが出るのか分かりません:TypeError:bet()missing 1必要な位置引数: 'betsize'。pythonデコレータを使用してメソッドに属性を追加する
ファイルgame.py
class Game(object):
def __init__(self):
..
@AddCalled
def bet(self, betsize):
print(betsize)
ファイルaddcalled.py:
class AddCalled(object):
def __init__(self, f):
self.f = f
self.called = False
def __call__(self, *args, **kwargs):
self.f(*args, **kwargs)
self.called = True
私はQtのシグナル(ボタンクリック)からbetsizeを取得します。ターゲットスロット機能はgame.pyから()を賭けている
Traceback (most recent call last):
File "/home/njl/projet/mainui.py", line 27, in bet
self.game.bet(self.ui.betLine.text())
File "/home/njl/projet/addcalled.py", line 15, in __call__
self.f(*args, **kwargs)
TypeError: bet() missing 1 required positional argument: 'betsize'
私はいくつかをいただければ幸い私はベットボタンをクリックしたときに、私はこのエラーを得た今
class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
..
self.connect(self.ui.btnBet, SIGNAL("clicked()"), self.bet)
def bet(self):
#assuming 'game' is an instance of Game()
self.game.bet(self.ui.betLine.text())
ファイルmainui.py助けて。 Litteralyはそこにこだわった。
コードにエラーがあります: 'self.f'を使って関数を' __init__'に保存しますが、 'call'に' self.func'を使ってアクセスしようとします。 – BrenBarn
なお、メソッドに属性を格納すると、メソッドがいずれかのインスタンスによって呼び出されたときに一度しか設定されません。 'Game'の与えられたインスタンスで' bet'が呼び出されたかどうかは分かりません。この問題は 'called'属性の使い方によって異なります。 – BrenBarn
ああ申し訳ありませんが、実際に私のコードによく書かれています。私はちょうど@BrenBarnを編集しました – khanh