python self详解

在 Python 中,self 是一个约定俗成的名称,用于类的方法中,表示当前对象的实例。它并不是 Python 的关键字,而是一个约定,可以使用其他名称,但使用 self 是一种编程规范,使代码更具可读性和一致性。

self 的作用
引用实例对象

self 代表类的实例,允许在类的方法中访问该实例的属性和其他方法。它是实例对象的一个指针,使得类的方法可以访问和修改实例的状态。

class MyClass:
    def __init__(self, value):
        self.value = value  # 通过 self 访问实例属性

    def display(self):
        print(self.value)  # 通过 self 访问实例属性

实例化和方法调用

当你调用类的方法时,self 自动传递给方法。你不需要显式地传递 self 参数。

obj = MyClass(10)
obj.display()  # 这里的 self 是 obj

上面的调用 obj.display() 实际上会被解释为 MyClass.display(obj),obj 被自动传递给 self。

self 的使用
初始化实例属性

init 方法中,self 用于初始化实例的属性。

class MyClass:
    def __init__(self, value):
        self.value = value

访问和修改实例属性

在类的方法中,self 用于访问和修改实例属性。

class MyClass:
    def __init__(self, value):
        self.value = value

    def set_value(self, new_value):
        self.value = new_value  # 修改实例属性

    def get_value(self):
        return self.value  # 访问实例属性

调用其他方法

在类的方法中,self 可以用来调用其他方法。

class MyClass:
    def __init__(self, value):
        self.value = value

    def display(self):
        print(self.value)

    def call_display(self):
        self.display()  # 调用实例方法

避免名称冲突

self 可以帮助避免名称冲突,确保方法和属性不会与类的其他部分混淆。

class MyClass:
    def __init__(self, value):
        self.value = value
        self.temp = 0

    def update(self, value):
        temp = value  # 这是局部变量,不会影响 self.temp
        self.temp = value  # 这是实例属性

使用其他名称代替 self
尽管 self 是推荐的名称,但你可以使用其他名称。使用 self 是为了保持代码的可读性和一致性。

class MyClass:
    def __init__(this, value):
        this.value = value

    def display(this):
        print(this.value)

self 与 cls
self 用于实例方法,而 cls 用于类方法。cls 是类方法的第一个参数,类似于 self 用于实例方法。类方法可以通过 @classmethod 装饰器定义。

class MyClass:
    class_variable = 0

    def __init__(self, value):
        self.value = value

    @classmethod
    def class_method(cls):
        print(cls.class_variable)  # 访问类变量

总结
self 是 Python 中类方法的第一个参数,代表实例对象。
self 用于访问和修改实例的属性,以及调用其他实例方法。
self 使得类的方法能够在对象级别上操作数据。
self 并非 Python 的关键字,但是一种约定,使代码易于理解和维护。

  • 16
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值