You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python两种类实例化方式的差异及self作用解析

首先展示你提供的两段代码:

#first way
class temp:
    def __init__(self, name):
        self.name = name

object1 = temp("abolfazl")
print(object1)

#second way
class temp:
    def __init__(self, name):
        self.name = name

print(temp("abolfazl"))

两种方式的差异

  • 第一种方式:创建temp类实例后,把实例赋值给了变量object1。后续你可以通过object1访问这个实例的属性、调用它的方法,只要这个变量还存在,实例就不会被回收。
  • 第二种方式:创建实例后没有将其绑定到任何变量,只是直接打印。打印完成后,这个实例因为没有任何引用指向它,会被Python的垃圾回收机制自动清理,之后再也无法访问该实例。

简单来说,两者都成功创建了实例,但第一种保留了实例的访问入口,第二种用完就丢失了实例的访问权限。

self的作用

self是Python类中实例方法的第一个必填参数,它代表的是当前被调用的那个实例对象本身。

比如执行object1 = temp("abolfazl")时,Python会先创建一个temp类的实例,然后自动把这个新实例作为第一个参数传给__init__方法里的self,self.name = name就是把传入的"abolfazl"绑定到这个新实例自己的name属性上。

它和object1不是一回事:object1是你给这个实例起的变量名,而self是类方法里用来指代当前实例的通用参数——哪怕你给实例起别的名字,比如obj2 = temp("test"),调用__init__时self就会指向obj2这个实例。

内容的提问来源于stack exchange,提问作者Abolfazl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 22:45:45