我有一個實例變量,似乎被視爲類變量,因爲它更改了該對象的所有實例。Python似乎將實例變量視爲類變量
class DNA(object):
def __init__(self,genes = pd.DataFrame(), sizecontrol=500, name='1'):
self.name = name
self.genes = genes # This attribute should be an instance variable
self.GeneLen = self.genes.shape[1]
self.sizecontrol = sizecontrol
self.Features = []
self.BaseFeats = []
random.seed(self.name)
當我運行此我得到如下:
In[68]: df = pd.DataFrame(data)
In[69]: x1 = DNA(genes=df)
In[70]: x2 = DNA(genes=df)
In[71]: x1.genes["dummy"] = 'test'
In[72]: x2.genes["dummy"].head(4)
Out[72]:
0 test
1 test
2 test
3 test
我怎樣才能確保x1.genes不影響x2.genes?
嘗試傳遞df變量作爲'DNA(基因= df.copy())' – ZdaR
您的兩個實例都使用與他們的'.genes'屬性相同的數據框。 –
其中,@ PM2Ring意味着內存中的字面意思相同。 – timgeb