我有一个实例变量,似乎被视为类变量,因为它更改了该对象的所有实例。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