Python中self、@staticmethod、@classmethod的区别

1. 类成员方法必须经过实例化对象后才能调用

2. 类成员方法的调用:

  • 类方法:类名.方法名()
  • 实例方法:类名().方法名()

3. self、@staticmethod、@classmethod的区别

(1)self:表示是当前类对象本身的实例,写在函数定义的第一个参数位置。

  • 在当前函数内要访问当前类的属性和函数,需要通过关键字self.属性或self.方法()来调用。
  • 如果是其他类或包需要调用当前函数,可以通过实例方法来调用。

(2)@staticmethod:装饰器,写在函数定义的前面。

  • 在当前函数内要访问当前类的属性和函数,需要通过类名.属性或类名.方法()来调用。
  • 如果是其他类或包需要调用当前函数,可以通过类方法和实例方法来调用。

(3)@classmethod:装饰器,写在函数定义的前面。

  • 在当前函数内要访问当前类的属性或函数,需要通过在函数参数中定义一个参数来传递当前类对象,参数名自定,如参数.属性或参数.方法()。
  • 如果是其他类或包需要调用当前函数,可以通过类方法和实例方法来调用。

实例:

class C:
	name = 'I am 18.'
	
	def func1(self):
		print(self.name)  # 调用当前类的属性,通过self.属性调用
		
        #静态方法装饰器
	@staticmethod
	def func2():
		print(C.name)  # 调用当前类的属性,通过类名.属性调用
		
        #类方法装饰器
	@classmethod
	def func3(cls):
		print(cls.name)  # 调用当前类的属性,通过当前类参数.属性调用
>>> C().func1()
I am 18.
>>> C.func2()
I am 18.
>>> C().func2()
I am 18.
>>> C.func3()
I am 18.
>>> C().func3()
I am 18.

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值