2011-10-19 4 views
1

それを理解すること)。私が従っているチュートリアルのうちの1つ(単純なもの)は、単に「ノード」の新しいインスタンスを呼び出し、リストからモデルを生成することによってツリーにデータを取り込みます。ノードには名前と親ノードがあります(下記参照)。これは、プログラム内でデータを生成する場合には問題ありません。これは私がちょうど続くことができます:)オブジェクトのインスタンス名に文字列を変換する - QAbstractItemModelを使用して(とトラブルの多くを持つ - 私はおそらく私がSQLデータからQTreeViewを投入しようとしています。このすべて間違っているけど...</p> <p>についてつもりパイソン

しかし、私はテーブルからデータを持ってきて、正しい親ノードを識別するために文字列を使用したいと思っています - 主にレコードを反復していると私はできません別の変数(?)を使用してそれぞれの名前を付けます。これは、recs:node = Node( "name"、parentnode)内のxに対して行われます。

これを行うと、文字列が正しいオブジェクトではなく、メソッドがないという明白なエラーメッセージが表示されます。私のテーブルから派生した文字列を使って、正しい '親'オブジェクトを識別する方法はありますか(誰かが非常に熱心な才能のある学習者のために設計された非常に基本的なQtreeviewモデルチュートリアルの指針になります) 。

rootNode = Node("Hips") 
childNode0 = TransformNode("RightPirateLeg",  rootNode) 
childNode1 = Node("RightPirateLeg_END", childNode0) 
childNode2 = CameraNode("LeftFemur",    rootNode) 
childNode3 = Node("LeftTibia",    childNode2) 
childNode4 = Node("LeftFoot",    childNode3) 
childNode5 = LightNode("LeftFoot_END",   childNode4) 

私はおそらく私がここに歩いて私の無知のために前に謝罪する前に実行していることを認識します。

答えて

2

文字列はグローバル変数の名前ですか?もしそうなら、あなたは(当然の変数の文字列名で'name'を交換する。)、globals()['name']とグローバル変数でrefenced値にアクセスすることができます

をそれとも、いっそ、代わりにすべてのあなたのグローバル名前空間 上で変数名をポイ捨てしますあなたはdictを使用することができます。

node={} 
node['rootNode']=Node('Hips') 
node['childNode0']=TransformNode('RightPirateLeg',node['rootNode']) 
... 

これは、文字列名と値の間にマッピングすることが非常に容易になります。

+0

これを試してみて、魅力的なように思える:)これは本当にありがとう。 –

+0

2番目の提案を選択していただきたいと思います。変数にインデックスを付けることは、リストや 'dict'のようなコンテナデータ型を使うべきであることを常に示しています。 @unutbu -1は醜い 'globals'のものを提案しています。それは全くPythonではありません... – schlamar

+0

はい - オプション2. –

関連する問題

 関連する問題