2010-11-30 5 views
0

リストからクラスインスタンスを作成する方法(またはExcelからフェッチされる可能性のある文字列)を教えてください。私はいつもこの問題に遭遇しているようだ。私はクラスの多くのインスタンスを作成し、後でそれらをシェルブに保存したいと思います。クラスインスタンスの作成

このサンプルコードは機能しませんが、私が試みているアプローチを示しています。

class test: 
    def __init__(self): 
     self.a='name' 

if _name__=='__main__': 
    list=['A','B'] 
    for item in list: 
     item=test() 
+0

"for i in seq:"を呼び出すと、iはseqの元のオブジェクトではなく、そのコピーがコピーされます。だからあなたのコードはうまくいかないでしょう。 – Kabie

+2

なぜあなたはこれを試していますか? 'class 'が関数として使われているところはどこですか? Pythonを学ぶためのチュートリアルは何ですか? –

+0

ごめんなさい、新しいPythonとStackoverflowの新機能です。私の苦労を許してください。 – Todd

答えて

1

変数の名前付けにはいくつかの問題があります。それはあなたを混乱させる可能性があります。

class test: 
    # I guess you want to provide the name to initialize the object attribute 
    def __init__(self, name): 
     # self.name is the attribute where the name is stored. 
     # I prefer it to self.A 
     self.name = name   

ここでの問題は、インスタンスがあなたのリストの要素であることです。これは名前であると推測されます。

if __name__=='__main__': 
    # I presume these are list of names 
    list_of_names = ['A','b','c'] 

    # You have to store your instance some where. 
    instance_list = [] 

    # Here name is an element of the list that you are iterating 
    # I change it to name instead of instance 
    for name in list_of_names: 
     # Here I am appending to the list, a test object that I create   
     instance_list.append(test(name)) 

[編集:]今

、私は本当にあなたを理解していない、なぜコードのこの作品:

for item in list: 
     item=class() # How can you reassign the item ? 

このアイテムが何であるかを参照してください。

>>> for item in ['A', 'B']: 
...  print item 
... 
A 
B 
>>> 

あなたはitem = ....それを割り当てるべきではありませんが、あなたはそれを.... = ..(item)使用する必要があります!

+0

各クラスインスタンスは、他の場所から変数を取得し、関数を実行します。私が悩んでいるのは、フェッチされた文字列値(またはこの場合のリスト)からインスタンスを作成する方法です。 – Todd

+0

@Todd: "インスタンスをフェッチされた文字列値* __mean__から作成しますか?インスタンスは作成されません__from__ anythin 。 – katrielalex

関連する問題