【Python】Python中的@staticmethod和@classmethod的用法

【Python】Python中的@staticmethod和@classmethod的用法

1. @staticmethod

  • 静态方法是属于类而不是类的实例的方法。
  • 静态方法不需要访问类的实例或实例的状态。因此,它们不接受 self 参数。
  • 可以通过类名直接调用静态方法,也可以通过实例调用。

2. @classmethod

  • 类方法是属于类的方法,它可以访问类的状态,但不能访问实例的状态。
  • 类方法的第一个参数是类本身,通常命名为 cls。
  • 类方法可以通过类名直接调用,也可以通过实例调用。
class MyFoo(object):
    def __init__(self):
        pass

    def greet_foo(self):
        print("Foo")
    
    @staticmethod
    def static_foo():
        print("Hello: ")
        
    @classmethod
    def class_foo(cls):
        print("Hello: ")
        cls().greet_foo()
MyFoo.static_foo()
MyFoo.class_foo()
Hello: 
Hello: 
Foo

总的来说,主要的区别在于静态方法不接受类或实例参数,而类方法接受一个表示类的参数。选择使用哪种方法取决于你的需求。如果方法不需要访问实例状态或类状态,可以使用静态方法。如果方法需要访问类状态,可以使用类方法。

猜你喜欢

转载自blog.csdn.net/qq_44940689/article/details/134512302
今日推荐