python @staticmethod和@classmethod
首先记住: 面向对象的三大特点是 数据封装、继承和多态
python 其实有3个方法,即静态方法(@staticmethod),类方法(@classmethod)和实例方法;
class A(object): def foo(self,x): print u"A类下函数foo的参数:",x @classmethod#类方法 def class_foo(cls,x): print u"A类下函数class_foo的参数:",x @staticmethod def static_method(x): print u"A类下函数static_foo的参数:",x a=A() a.foo("w") a.class_foo("e") a.static_method("r") # A.foo("t")报错 A.static_method("Y") A.class_foo("U")
普通实例方法,第一个参数需要是self,它表示一个具体的实例本身。
静态方法
如果用了装饰器@staticmethod,那么就可以无视这个self,而将这个方法当成一个普通的函数使用。
类方法
而对于装饰器@classmethod,它的第一个参数不是self,是cls,它表示这个类本身。
注意:
实例方法的调用离不开实例,需要把实例自己传给函数,所有类里的函数需要foo(sel,x),类方法一样,只不过他传递的是类不是实例,A.class_foo(x);
对于静态方法和普通的方法一样,不需要对谁进行绑定,唯一的区别是调用的时候需要使用a.static_foo(x)或者A.static_foo(x)来调用。
类的一些相关知识:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了