Python中的self用法

self 的含义

在 Python 类中,self 代表 当前实例对象。在方法定义中,self 允许方法访问 类的属性和其他方法

比如,在你的 Evaluator 类中,evaluate(self, data) 需要 self 来访问 self.target_column,即 Evaluator 实例的目标列(label)。


📌 self 的作用

1️⃣ 访问类的属性
class Evaluator:
    def __init__(self, target_column):
        self.target_column = target_column  # 存储目标列名

    def evaluate(self, data):
        # `self.target_column` 访问实例的 target_column
        X = data.drop(self.target_column, axis=1)
        y = data[self.target_column]

💡 如果 evaluate() 里面不使用 self,那么 target_column 只能作为参数传递,而不能在对象初始化时存储。


2️⃣ 访问类的其他方法

假设 Evaluator 还有一个 get_model() 方法,evaluate() 需要使用它:

class Evaluator:
    def __init__(self, target_column):
        self.target_column = target_column

    def get_model(self):
        return RandomForestClassifier(n_estimators=100, max_depth=5, random_state=42)

    def evaluate(self, data):
        X = data.drop(self.target_column, axis=1)
        y = data[self.target_column]

        model = self.get_model()  # 使用 self 调用类内的方法
        model.fit(X, y)

💡 如果不使用 self.get_model()evaluate() 无法调用 get_model()


📌 self 的使用方法

✅ 正确示例:创建 Evaluator 对象并调用 evaluate()
# 创建 Evaluator 实例
evaluator = Evaluator(target_column="salary")

# 传入数据进行评估
data = pd.DataFrame({
    'age': [25, 30, 35, 40, 45],
    'salary': [5000, 6000, 7000, 8000, 9000]
})

result = evaluator.evaluate(data)
print(result)

💡 这里 evaluator.evaluate(data) 内部 self 指向 evaluator 实例,所以可以访问 self.target_column


📌 总结

self 代表实例对象,允许方法访问实例的属性和其他方法
在类的方法中,必须使用 self 访问类的变量
调用方法时,self 是隐式传递的(不需要传递 self 作为参数)

🎯 简单记住在类中,凡是需要跨方法访问的变量,都应该用 self 绑定! 🚀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值