【Python语法】staticmethod、classmethod类装饰器实例说明

staticmethod

在使用staticmethod装饰器后,类函数可以用实例化对象或者类来调用该函数。

class Te:
	@staticmethod
	def add(a, b):
		return a+b

	def add_self(self, a, b):
		return a+b

cal = Te()
# 可通过类名直接使用静态函数
result1_1 = Te.add(1, 2)
# Te不能像上一行那样直接a+b了,因为这个不是静态函数,
# 如果硬要在Te使用这个函数,只能在传入类对象后才能使用。
result1_2 = Te.add_self(cal ,1, 2)
# 实例化后的类对象可以正常使用所有的函数,变量	
result2_1 = cal.add(1 ,2)
result2_2 = cal.add_self(1, 2)

运行后就可以发现,无论是通过类调用函数还是实例化对象后再调用函数都能成功执行add函数。

classmethod

在使用classmethod装饰器后,类函数可以用实例化对象或者类来调用该函数。并可以拿到类里面定义的参数的值。

class Te:
	value = 1

	def __init__(self):
		self.key = 2

	@classmethod
	def show_value(cls):
		return cls.value

	@classmethod
	def add_by_cls(cls, a, b):
		return a+b

# 通过类名拿到类中value的值,拿到1
# 但是通过类名,并不能拿到self.key的值,因为self.key是实例属性,value是类属性
result1 = Te.show_value()
# 通过类名执行add_by_cls函数,拿到3
result2 = Te.add_by_cls(1, 2)
# 实例化一个对象后可以自由使用
cal = Te()
result3 = cal.show_value()
result4 = cal.add_by_cls(1, 2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值