なぜこの開梱の引数はしない。
-
21-12-2019 - |
質問
エラ type object argument after ** must be a mapping, not tuple
.
私はこのコード:create_character = player.Create(**generate_player.generate())
この player.py
モジュール:
class Create(object):
def __init__(self,name,age,gender):
self.name = name
self.age = age
self.gender = gender
この generate_player.py
モジュール:
import prompt
def generate():
print "Name:"
name = prompt.get_name()
print "Age:"
age = prompt.get_age()
print "Gender M/F:"
gender = prompt.get_gender()
return name, age, gender
の prompt
モジュールはバンチの raw_input
sを返すのいずれかの文字列または整数(int用 age
).
なぜそのタプルを返?する活動を行う意欲 print type
に generate_player
モジュールを取得しまstring,int,string私の論争することができます。
解決
**
構文には、マッピング(辞書など)が必要です。マッピング内の各キー値のペアはキーワード引数になります。
あなたのgenerate()
関数は、辞書ではなくタプルを返します。 one アスタリスク:
create_character = player.Create(*generate_player.generate())
.
または辞書を返すようにgenerate()
関数を修正します。
def generate():
print "Name:"
name = prompt.get_name()
print "Age:"
age = prompt.get_age()
print "Gender M/F:"
gender = prompt.get_gender()
return {'name': name, 'age': age, 'gender': gender}
. 他のヒント
単一のアスタリスクを望みます:
create_character = player.Create(*generate_player.generate())
.
1つのアスタリスクを使用する一連の引数を渡します。ダブルアスタリスクの構文は、例えばこのようなことをするようにマッピングを渡すためのものです。
player.Create(**{'name': 'Richie', 'age': 21, 'gender': 'male'})
. 所属していません StackOverflow