私はプログラミングが初めてで、私はPythonを選択しました。私はすべてのPythonを苦労して学びました。私は自分自身で「自分のアドベンチャーゲームを選んでください」というコードを書いています。今はMOOに似た何かを作っていきます。'containers.Room'のような型クラス文字列からクラスのインスタンスを作成しますか?
私のオブジェクトデータベースは非常にシンプルに構成されています(ゲーム内のすべてがオブジェクトになり、別の属性データベースがオブジェクトをカスタマイズするのに役立ちます)。現在のオブジェクト構造は、このようなものです:
OBJECTID、名前、型クラスは、
locationidが戻って同じOBJECTID、オブジェクトは、部屋、またはプレイヤーに属することができ、そのように外部キーですlocationid。
私の質問は、どのように私はtypeclassを設定したいと思います。現在、私はそこにコンテナのような文字列を格納したい:ルーム。私はデータベースから情報を引き出す(または新しい部屋を作成する)とき、私はクラスルーム()のインスタンスをコンテナと呼ばれる別のpythonスクリプトに含めることができるようにしたい。私はコンテナのインポートルームからやっていることを知っていますが、格納された文字列から動的に行う方法はわかりません。
私と知り合い、答えを共有してくれる人に、ありがとうございます!明快ため
編集(私はrambled ...)
私は、私のデータベース(「module.Class」)から文字列を引っ張ってそのモジュールとクラスをインポートし、そして言ったクラスのインスタンスを作成したいです。
edit2 ここではsqliteコマンドを使用しています。最後に、私はtypeclassのインスタンスを返したいと思います。
def create(self, **args):
#requires name=string and typeclass=string. no locationid for rooms
#connect to the sqlite db and create a cursor for commands
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
#probably a better way to do this, but this is what I came up with
columns = []
values = []
for k, v in args.iteritems():
#iterate through arguments, if the column ends in 'id' assume int
columns.append(k)
if k[-2:] == "id":
values.append("%s" % v)
else:
values.append(("'%s'" % v))
#join columsn and rows and plug them into the query
cols = ', '.join(columns)
rows = ', '.join(values)
query = "INSERT INTO objects_db (%s) VALUES (%s)" % (cols, rows)
#execute the query, commit, and close the connection.
cursor.execute(query)
conn.commit()
conn.close()
>>> stuff here to import args['typeclass'] <<<
だから私のようなライン持ってできるようになります。create =
このmyobjを(名前= "私のオブジェクト" を、型クラス= "objects.things.Thing")作成することになり
データベース内の「my object」と「myobj」変数は、objectsフォルダとthings.pyファイルにあるThingクラスのインスタンスになります。
あなたの質問を編集してより明確にできますか? –
データベース( "module.Class")から文字列を取り出し、そのモジュールとクラスをインポートし、そのクラスのインスタンスを作成したいとします。 – imrobertjames
データベースの外観やサンプル行を貼り付けることはできますか?それはcsvファイルですか? – mitoRibo