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.

猜你喜欢

转载自blog.csdn.net/nLIYAN/article/details/82051186
今日推荐