Python静态方法@staticmethod详解:定义、调用与使用场景

Oliver
Oliver
发布时间:2026-10-15 | 4人浏览过
原创

本文详细解析Python中静态方法@staticmethod的定义与使用。静态方法既不需要访问实例属性也不需要访问类属性,通过@staticmethod装饰器定义,无需self或cls参数。可通过类名或实例对象调用,有助于减少内存占用并提升性能。文章包含多个代码示例,对比实例方法、类方法与静态方法的差异,帮助开发者合理封装逻辑。

静态方法的定义与适用场景

在软件开发过程中,利用类对方法进行封装是常见做法。若某方法需访问对象的实例属性,应将其封装为实例方法;若需访问类的类属性,则适合封装为类方法。然而,还存在第三种情况:当封装的方法既不需要访问对象的实例属性,也不需要访问类的类属性时,此时应考虑将该方法封装为静态方法。

在开发实践中,若类中的某个方法既不访问实例属性或调用实例方法,也不访问类属性或调用类方法,即可将其定义为静态方法。实现方式是在def关键字上方添加静态方法修饰符@staticmethod。

其语法格式如下所示:

@staticmethod
def 静态方法名():
    pass

Python中的静态方法在写法上与常规函数def无异,主要区别在于它被定义在类内部,且无需实例化类即可直接调用。

必须通过装饰器@staticmethod进行修饰。静态方法在定义时不需要传递类对象(cls)或实例对象(self),因此其形参列表中不包含这两个参数。

尽管静态方法不依赖对象状态,但仍可通过实例对象和类对象两种方式访问。

当方法内部既不使用实例对象(如实例属性),也不使用类对象(如类属性、类方法或创建新实例)时,应定义为静态方法。

移除不必要的参数传递,有助于减少内存占用并降低性能消耗,提升代码执行效率。

静态方法的语法与调用方式

以下示例代码展示了静态方法的基本用法:

class Dog(object):
    @staticmethod
    def info_print():
        print('这是⼀个狗类,⽤于创建狗实例....')
 
 
wangcai = Dog()
# 静态⽅法既可以使⽤对象访问⼜可以使⽤类访问
wangcai.info_print()
Dog.info_print()

运行结果如下:

静态方法与实例方法、类方法的对比

在类中同时编写静态方法与普通方法:

class Static(object):
    @staticmethod
    def test_static():
        print('I am staticmethod')
 
    def test_def(self):
        print('I am not staticmethod')
 
 
#  调用静态方法
Static.test_static()
 
#  实例化调用静态方法
obj = Static()
obj.test_static()

运行结果如下:

从上述代码及运行结果可见,静态方法可直接调用,无需传递任何参数,包括self。静态方法的核心意义在于将函数归类,实现逻辑的高内聚与紧耦合。

在类对象中定义静态方法的示例:

class MyClass(object):
    # 在类对象中定义的静态方法
    @staticmethod
    def tom(age, weight):  # 没有 self
        print(age, weight)
 
    @classmethod
    def get_info(cls):
        # 通过类对象调用类方法
        MyClass.tom(25, 66)
 
    def my_info(self):
        # 通过实例对象调用静态方法
        self.tom(26, 77)
 
 
# 通过类对象调用静态方法
MyClass.tom(23, 55)  # 23 55
 
# 实例化
mc = MyClass()
 
# 通过实例对象调用静态方法
mc.tom(24, 65)  # 24 65
 
# 通过类对象调用类方法
mc.get_info()  # 25 66
 
mc.my_info()  # 26 77

运行结果如下:

实例方法、类方法与静态方法的综合应用示例:

class MyClass(object):
    def __init__(self, name):
        self.name = name
 
    def get_info(self):  # 定义实例方法,有 self 参数
        print("实例方法")
 
    @classmethod
    def get_other(cls):  # 定义实例方法,有 cls 参数
        print("类方法")
 
    @staticmethod
    def get_my_class():  # 定义静态方法,无默认参数
        print("静态方法")
 
 
# 实例化
mc = MyClass("tom")
 
# 调用实例方法
mc.get_info()  # 实例方法
 
# 调用类方法,建议通过 类对象.类方法([实参]) 方法调用
MyClass.get_other()  # 类方法
 
# 调用静态方法,建议通过 类对象.类方法([实参]) 方法调用
MyClass.get_my_class()  # 静态方法

运行结果如下:

至此,关于Python中静态方法@staticmethod用法的详解已介绍完毕。如需了解更多相关Python staticmethod内容,建议查阅本站过往文章或继续浏览后续教程,感谢支持!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表