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
相关产品推荐
相关产品推荐

