2016-11-29 16 views
0

Pythonでオブジェクトを再作成/再インスタンス化する方法を探しています。オブジェクトに各ループのデフォルト属性を持たせたいからです。Pythonでオブジェクトを再作成/再インスタンス化する方法2.7

for case in all_case: 

    # I want an object to be newly created/reinstantiated in each loop 
    pda = PushDownAutomata() 
    print pda.evaluate(case, debug=False) 

    # I already added "del pda" but it does not work 

どうすれば実現できますか?

+1

削除する必要はありません。このコードは、各反復で新しいオブジェクトを作成しています。 –

+0

しかし、オブジェクト内のクラス変数は新しい属性を取得しません。以前のオブジェクト値は常に –

+1

です。これはクラス変数が行うためです。削除してもそれは変わりません。必要がない場合は、代わりにインスタンス変数を使用してください。 –

答えて

2

クラス属性はインスタンス属性と同じではありません。 例:

class A(object): 

    a = None # this is a class attribute 

    def __init__(self, b): 
     self.b = b # b is an instance attribute 
1

問題は次のコードで修正されました。前にクラス変数を使用していました - 問題を解決するインスタンス変数に変更しています:

# before (class variable) 
class PushDownAutomata(): 
    stack = [] 
    state = 'q1' 

# after (instance variable) 
class PushDownAutomata(): 
    def __init__(): 
     self.stack = [] 
     self.state = 'q1' 
関連する問題