私はこのコードを書いて、ユーザー入力を介してオブジェクトにアクセスしました。これは、地元の人々と作品(私はあまりにも辞書を作ることができます知っている)2つの入力を取得し、クラスのオブジェクトやメソッドにアクセスする方法は?
class Dragon:
def __init__(self, head, legs):
self.head = head
self.legs = legs
def sum(self):
return self.head + self.legs
redfire = Dragon(2, 4)
dic1 = {"redfire": redfire}
input_object = input()
print(dic1[input_object].sum())
が、私はクラスのメソッドと同じことをやろうとしているとき:
class Dragon:
def __init__(self, head, legs):
self.head = head
self.legs = legs
def sum(self):
return self.head + self.legs
def mul(self):
return self.head * self.legs
redfire = Dragon(2, 4)
dic1 = {"redfire": redfire, "sum": Dragon.sum(self), "mul": Dragon.mul}
input_object = input()
input_method = input()
print(dic1[input_object].dic1[input_method])
私はすべての種類を取得しています
Traceback (most recent call last):
File "C:\Users\millw0rm\test.py", line 10, in <module>
dic1 = {"redfire": redfire, "sum": Dragon.sum(self), "mul": Dragon.mul}
NameError: name 'self' is not defined
辞書に登録されているメソッドの有効なキーを定義するにはどうすればよいですか?実際に
redfire = Dragon(2, 4)
dic1 = {"redfire": redfire, "sum": Dragon.sum(self), "mul": Dragon.mul}
を、あなたのクラスの関数定義で:あなたは間違いなくクラスメソッドを使用していない
なぜ 'Dragon.sum'ですか?あなたはすでに 'redfire'インスタンスを作成しました。なぜそれをdictに追加しないのですか?その場合、 'self'は暗黙的に渡されます。または、 'Dragon 'を追加します。**まったく同じことをするばかげたやり方であるsum(redfire) '。 –
'getattr(dic1 [input_object]、input_method)()'しますか? – jonrsharpe
実際には、私は辞書のlook.itのそのメソッド部分で何をやっていたのか分かりません。いくつかのクラスがいくつかあると思います。オブジェクトをたくさん持っています。 object - そのオブジェクトの属性に関する指定を行うクラスのメソッド。この1つのように私はオブジェクトredfireを取得し、その後、私は入力からメソッドの合計を取得したいと思います。 – Millw0