我对在python中将参数赋给class属性时看到的一些行为感到非常惊讶。也许有人能启发我,帮我阻止它的发生。你知道吗
本质上,我对class方法中的class属性所做的更改被复制到全局变量中,该全局变量作为参数传递给classinit。你知道吗
是否有一种内置的方法来阻止这种行为,因为在很多情况下,它可能会将数据变量分解为其他用途。你知道吗
下面是代码的基本版本
class BasicClass:
def __init__(self, data_raw):
self.data = data_raw
self.data['new_column'] = 1
# Now outside the class
data = pd.read_csv(...)
data.columns
Out[1]: ['orig_column']
obj = BasicClass(data)
data.columns
Out[2]: ['orig_column','new_column']
这是因为
self.data
和data
都指向同一个对象。你知道吗如果您想要一个
list
的深度副本,那么请参考:How to clone or copy a list?
相关问题 更多 >
编程相关推荐