【发布时间】:2017-09-15 03:13:06
【问题描述】:
我对在 python 中为类属性分配参数时看到的一些行为感到非常惊讶。也许有人可以启发我,并帮助我阻止它发生。
基本上,我在类方法中对类属性所做的更改会复制到作为参数传递给类 init 的全局变量中。
是否有内置的方法来阻止这种行为,因为在很多情况下它可能会破坏数据变量以供其他用途。
这是一个基本版本的代码
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']
【问题讨论】:
-
试试data_raw.copy()?