Pyhton @staticmethod
@staticmethod是一个内置的修饰符,它在Python中定义类中的静态方法。静态方法不接收任何引用参数,无论它是由类的实例调用还是由类本身调用。
@staticmethod 特点
- 声明一个静态方法
- 不可以有
cls
orself
参数. - 既不可以访问类的方法,又不可以访问实例的方法 .
- 可以通过
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
不要小瞧女程序员
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 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 子组件修改父组件的值