2016-09-11 13 views
0

私は、スクリプトを実行するたびに変更される固有の項目(名前があれば)を含むリストを持っています。これらのアイテムには、スクリプト中に変更されたいくつかの計算されたプロパティがあります。たとえば、 'S1'はpos = 55とori = 'R'を持ちます。彼らの名前に基づいてこれらのプロパティに簡単にアクセスしたいと思います。リストの各要素に設定されたプロパティを割り当てるPython

これらのプロパティを「割り当てる」最も良い方法は何ですか?私は周りを探してきたと辞書が前方に行くための正しい方法も思えませんので、私はクラスを試してみましたし、次の非機能コードコード作られた:右のトラックに

class Primer: #contains all properties of a primer 
    def __init__(self): 
     """ Contains all properties of the primer """ 
     self.pos = 0 #outermost 5' position in sequence to bind 
     self.ori = '' #F(orward) or R(everse) 


primer_list = ['S', 'M1', 'M2', 'M3', 'E'] 

for i in primer_list: 
     i = primer() 

print S.pos #this should give me the pos value of 'S' 

アムIをしかし、何かが足りないか、ありますこれを行うには良い方法がありますか?

EDIT 私はまた何とか私の価値観を取り戻す必要があると言いました。これを行う方法はまったく同じです

print primer_list[0].pos #should give me the pos value of S in my example 
+0

これらの項目はすべて同じプロパティを持っていますか? 'pos'と' ori'ですか?特定の値で初期化する必要がありますか? – galah92

+0

@ galah92これらはすべて同じ量のプロパティを持ちますが、値は変更されます。 oriは「F」または「R」です。空白の値で初期化する必要がありますが、これらはスクリプトの後のステップで割り当てられます。 – mimat

+0

その後、私はあなたが作ったのと同じようにクラスに行くでしょう。私はあなたのコードを構造化して読みやすくするのに役立つと信じています。 – galah92

答えて

0

リストに問題がありましたが、実際には古い値を作成したインスタンスに置き換えていませんでした。名前欄を追加して、各インスタンスを追跡できるようにしました。

class Primer: #contains all properties of a primer 
    def __init__(self, name): 
     """ Contains all properties of the primer """ 
     self.name = name 
     self.pos = 0 #outermost 5' position in sequence to bind 
     self.ori = '' #F(orward) or R(everse) 

    def __str__(self): 
     return self.name 

primer_list = ['S', 'M1', 'M2', 'M3', 'E'] 
new_primer = [Primer(x) for x in primer_list] 

for i in new_primer: 
    print i 
    print i.pos 
    print i.ori 
+1

このコードは私が必要としていたものです。 – mimat

関連する問題