转载自[1]

一般要用某个类的方法,先要实例这个类。

但是可以通过@staticmethod和@classmethod,直接用“类.方法()”来调用这个方法。

而 @staticmethod和@classmethod 区别是

@staticmethod不需要表示自身对象的self和自身类的cls参数,就跟使用函数一样。

@classmethod也不需要self参数,但第一个参数需要是表示自身类的cls参数。

@staticmethod中要调用到这个类的一些属性方法,可以直接类名.属性名或类名.方法名。

@classmethod有cls参数,可以来调用类的属性,类的方法,实例化对象等,避免硬编码。

下面上代码

class A(object):
bar = 1
def foo(self):
print 'foo' @staticmethod
def static_foo():
print 'static_foo'
print A.bar @classmethod
def class_foo(cls):
print 'class_foo'
print cls.bar
cls().foo() A.static_foo()
#输出
#static_foo
# A.class_foo()
#输出
#class_foo
#
#foo

参考:

[1] @staticmethod和@classmethod 作用和区别

http://blog.csdn.net/qq_15037231/article/details/77943109

最新文章

  1. jqGrid配置属性说明
  2. Jmeter + Grafana + InfluxDB 性能测试监控
  3. BZOJ 1853: [Scoi2010]幸运数字
  4. assets中放入中文文件名导致Android Studio编译错误
  5. Apache httpd和JBoss构建高可用集群环境
  6. jQuery插件综合应用(一)注册
  7. Tomcat 8熵池阻塞变慢详解(转)
  8. 下拉框上移、下移、添加、移除demo
  9. 代理模式 - OK
  10. TextField的所有属性和方法(转)
  11. MVC 5 + EF6 完整教程15 -- 使用DI进行解耦
  12. SSH隧道:端口转发功能详解
  13. 记一次nginx强制将https请求重定向http
  14. oracle建表流程
  15. Day019--Python--反射
  16. RS485 通信接收时丢失0x11等数据
  17. AHD/TVI/CVI/CVBS/IP
  18. 《深入分析JavaWeb技术内幕》学习笔记
  19. java基础22 日期类、日历类、日期格式类
  20. bzoj1588 [HNOI2002]营业额统计 (treap)

热门文章

  1. django系列 1 :python+django环境搭建 +mac提示找不到manage.py命令
  2. Python_反射
  3. linux 下配置svn
  4. MySQL准备
  5. div设置overflow-scroll滚动之后,jq获取其子元素的offset.top出现问题。
  6. 抛开jQuery,拾起原生JS的DOM操作
  7. python机器学习-sklearn挖掘乳腺癌细胞(五)
  8. MySQL最优配置模板( 5.6&5.7)(运维那点事)
  9. java版微信公众号支付(H5调微信内置API)
  10. excel vlookup简易样例【原】