python类属性作用域泄漏到全局作用域

2024-04-19 17:49:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我对在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']

Tags: columns方法selfnewdata参数raw属性