2016-11-29 71 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'