Pyhton @staticmethod

@staticmethod是一个内置的修饰符,它在Python中定义类中的静态方法。静态方法不接收任何引用参数,无论它是由类的实例调用还是由类本身调用。

@staticmethod 特点

  • 声明一个静态方法
  • 不可以有 cls or self 参数.
  • 既不可以访问类的方法,又不可以访问实例的方法 .
  • 可以通过ClassName.MethodName() 或者 object.MethodName().调用
  • 不可以返回一个实例

定义一个静态方法

class Student:
    name = 'unknown' # class attribute
    
    def __init__(self):
        self.age = 20  # instance attribute

    @staticmethod
    def tostring():
        print('Student Class')

不可以访问类属性、实例属性

class Student:
    name = 'unknown' # class attribute
    
    def __init__(self):
        self.age = 20  # instance attribute

    @staticmethod
    def tostring():
        print('name=',name,'age=',self.age)

会报错

>>> Student.tostring()
Traceback (most recent call last):
  File "<pyshell#22>", line 1, in <module>
    Student.tostring()
  File "<pyshell#21>", line 7, in display
    print('name=',name,'age=',self.age)
NameError: name 'name' is not defined

与@classmethod 比价

  • 类方法将cls作为第一个参数,而静态方法不需要特定的参数。
  • 类方法可以访问或修改类状态,而静态方法不能访问或修改它。

使用场景

我们通常使用类方法来创建工厂方法。工厂方法为不同的用例返回类对象(类似于构造函数)。
我们通常使用静态方法来创建实用函数。

参考:https://www.tutorialsteacher.com/python/staticmethod-decorator

posted @   sixinshuier  阅读(52)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
历史上的今天:
2019-07-20 19. slot插槽传递模板
2019-07-20 18. VUE created 方法作用
2019-07-20 17. Vue2.4+新增属性$listeners
2019-07-20 16. Vue2.4+新增属性$attrs
2019-07-20 1. HTML <fieldset> 标签
2019-07-20 15. Vue2.4+新增属性.sync
2019-07-20 14. VUE 子组件修改父组件的值
点击右上角即可分享
微信分享提示