次のように私は、Python 3.3.3に基本的なIntepreter /仮想マシンのクラスを作成しようとしていますのメソッドの辞書を作成してください:は、どのように私はPythonの
class VirtualMachine:
TERM_DICT = {
0x01 : self.writeline,
0x02 : self.expression
}
def test(self):
opcode = 0x01 #hardcoded for testing purposes
if opcode in self.TERM_DICT:
term = self.TERM_DICT[opcode]
term()
else:
print("opcode not recognised")
def writeline(self):
print("Writeline")
def expression(self):
return "Hello World"
myVM = VirtualMachine()
myVM.test()
私は私が手にこのスクリプトを実行してみてくださいエラーメッセージ:
Traceback (most recent call last): File "testVM.py", line 1, in <module> class VirtualMachine: File "testVM.py", line 4, in VirtualMachine 0x01 : self.writeline, NameError: name 'self' is not defined
どのように私はこのエラーを取り除くことができ、正しいクラスメソッドへの参照として適切に辞書を使用するを教えてください。
クラスの終わりに移動してください(*実際にそれらのメソッドを定義した後*)、 'self.'(インスタンスメソッド外のスコープにはありません)を削除してください。 – jonrsharpe
あなたのインデントはすべて乱れています。私はそれを修正することに行きましたが、混乱しました。コードを正しく理解できるように正しくインデントしてください。 –
@LegoStormtrooprインデントを修正しました。ありがとうございます。実際のコードではうまくいきました。それはちょうどSOに貼り付けることによってちょうどうんざりされました。 – Caltor