Python self 理解

在Python中,self 是一个特殊的参数,通常在类的方法中使用。它表示类的实例本身,允许你在方法内部访问和操作实例的属性和方法。

首先定义这样一个类:

class A:
	def ss():
		print("ss")

a = A()

在python中定义类A的实例a

在python中,

如果运行实例a.ss() 在内部等同于 ss(a),实例a会作为入参传给方法ss()

如果直接调用类类方法A.ss(),则类A不会作为入参传给到方法ss()

因此如果运行

a.ss()

则会出现错误:

TypeError: A.ss() takes 0 positional arguments but 1 was given

  这是因为a作为第一个参数传给了方法ss(),但ss方法却没有参数输入,因此我们需要给方法ss添加入参来接收调用它的实例

class A:
	def ss(aa):
		print("ss")

a = A()
a.ss()

此时再运行a.ss(),会在控制台打印"ss"

我们把aa换成self,就是约定俗成的self了

class A:
	def ss(self):
		print("ss")

a = A()
a.ss()

如果不喜欢self,可以使用 @staticmethod 装饰器告诉编译器这个是静态方法,调用该方法时不要把实例作为参数传入:

class A:
	@staticmethod
	def ss():
		print("ss")

a = A()
a.ss()

由于self是用来接收调用实例的,对于类而言,则不需要self这个东西来接收参数了

class A:
	def ss():
		print("ss")

A.ss()

再看下面这个例子:

class A:
	def ss(self):
		print("ss")

	def aa(self):
		self.ss()

a = A()

a.aa()

 实例a在调用方法aa()时,a会被参数self接收,再去调用方法ss(), 而方法ss()的self参数会接收方法aa()的self参数,所以a又被方法ss()的self参数接收,然后执行方法ss(),控制台输出"ss"。 

总结:方法中定义self参数用来接收调用它的实例对象。而类直接调用则不用。 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值