python的类方法(classmethod),静态方法(staticmethod),实例方法常见于日常的使用。
类方法:classmethod,以@classmethod装蚀器进行修饰,必须有一个参数,惯例下是“cls”,也可以是其他名称。通过它可以调用当前类的属性和方法。类方法一般实例和类都可以调用。在python中声明一个类方法语法如下:
class C:
@classmethod
def f(cls, arg1, arg2, ...): ...
静态方法:staticmethod,默认不包括任何参数,以@staticmethod装蚀器进行修饰,默认不包括参数。**静态方法一般实例和类都可以调用。**在python中声明一个静态方法语法如下:
class C:
@staticmethod
def f(arg1, arg2, ...): ...
实例方法:在python类里,默认的方法都是实例方法,函数的第一个参数必须是self,用于指向实例自身。一般只能用实例对象调用。**在python3.8中,存在问题。 **
下面利用代码进行说明。假设又一个类A,如下:
class A:
@classmethod
def say_hello(a):
print("hello world")
@staticmethod
def say_hi():
print("hi world")
def say_haha(self):
print("haha world")
if __name__ == "__main__":
# 可以直接用类名调用
A.say_hello()
# 可以通过类名调用
A.say_hi()
# 调用实例方法
# A.say_haha() 无法调用
# A.say_haha("dd") 这种情况下会把self当作参数,则类可以调用
A.say_haha(1)
# 定义实例A
a = A()
# 调用实例方法
a.say_haha()
# 调用静态方法
a.say_hi()
# 调用类方法
a.say_hello()