`
Jeffrey4l
  • 浏览: 9269 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

classmethod & staticmethod in python

阅读更多

Python 的类定义中,如果想要定义类的静态方法的话,有两种方法,一是classmethod,另一种是staticmethod。其实这两种方法是不相同的。

class A(object):

    @staticmethod
    def foo(message):
        print message

    @classmethod
    def bar(cls, message):
        print "%s => %s" % (cls, message)
>>> A.foo
<function __main__.foo>
>>> A.foo("foo")
foo
>>> A.bar
<bound method type.bar of <class '__main__.A'>>
>>> A.bar("bar")
<class '__main__.A'> => bar

可以看出,staticmethod的声明方式只是将函数的调用限定到了类里。在调用foo方法时,不能得到其调用都是谁。而classmethod是真正意义上的类方法,这点可以和java的static方法类比。他在调用时,是可以得到调用者的信息。尤其是在继承中,参考下面的例子。

class A:
    @classmethod
    def foo(cls,msg):
        print "%s => %s " % (cls,msg)

class B(A):
    pass
>>> A.foo("Hello World")
__main__.A => hello world
>>> B.foo("Hello World")
__main__.B => hello world

所以,在日常使用中,一般classmethod使用的情况更多一些。不推荐staticmethod的使用,应该用function来代替。

0
5
分享到:
评论

相关推荐

    Python @函数装饰器及@staticmethod,@classmethod.docx

    使用 @ 符号引用已有的函数(比如 @staticmethod、@classmethod)后,可用于修饰其他函数,装饰被修饰的函数。那么我们是否可以开发自定义的函数装饰器呢? 答案是肯定的。当程序使用“@函数”(比如函数 A)...

    Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析

    主要介绍了Python 类方法和实例方法(@classmethod),静态方法(@staticmethod),结合实例形式分析了Python 类方法和实例方法及静态方法相关原理、用法及相关操作注意事项,需要的朋友可以参考下

    python的staticmethod与classmethod实现实例代码

    主要介绍了python的staticmethod与classmethod实现实例代码,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下

    Python中staticmethod和classmethod的作用与区别

    今天小编就为大家分享一篇关于Python中staticmethod和classmethod的作用与区别,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    基于python中staticmethod和classmethod的区别(详解)

    下面小编就为大家带来一篇基于python中staticmethod和classmethod的区别(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Python 的描述符 descriptor详解

    问题,另外还引入了一些新的概念,比如 classmethod, staticmethod, super, Property 等。因此理解 descriptor 有助于更好地了解 Python 的运行机制。 那么什么是 descriptor 呢? 简而言之:descriptor 就是一类...

    python练手经典100例-推荐几个适合新手练手的Python项目《python入门例子》.pdf

    python练⼿经典100例-推荐⼏个适合新⼿练⼿的Python项⽬ 《python⼊门例⼦》 python 为什么实例对象可以调⽤类⽅法? 实例是什么例是类定义的实。那么,类中所定义的属⽅只要没有被屏蔽,在它的实体中就同样是可访问...

    Python 静态方法和类方法实例分析

    主要介绍了Python 静态方法和类方法,结合实例形式分析了Python类、实例、静态方法等相关概念、原理与使用技巧,需要的朋友可以参考下

    超全面python面试题

    3 @staticmethod和@classmethod 4 类变量和实例变量 5 Python自省 6 字典推导式 7 Python中单下划线和双下划线 8 字符串格式化:\x和.format 9 迭代器和生成器 10 *args and **kwargs 11 面向切面编程AOP和装饰器 12 ...

    Python探索之静态方法和类方法的区别详解

    Though classmethod and staticmethod are quite similar, there's a slight difference in usage for both entities: classmethod must have a reference to a class object as the first parameter, whereas st

    Python面试内容很多,干货满满

    3 @staticmethod和@classmethod 。 4 类变量和实例变量 o 5 Python自省 。6字典推导式 。 7 Python中单下划线和双下划线 。8 字符串格式化:\x和.format 。 9 选代器和生成器 10*args and **kwargs 。 11 面向切面...

    python实现装饰器、描述符

    装饰器进阶:property、staticmethod、classmethod源码分析(python代码实现) 装饰器基础 无参装饰器 ''' 假定有一个需求是:打印程序函数运行顺序 此案例打印的结果为: foo1 function is starting foo2 ...

    Python核心编程第二版

    很不错的python书 第1部分 Python核心  第1章 欢迎来到Python世界   1.1 什么是Python   1.2 起源   1.3 特点   1.3.1 高级   1.3.2 面向对象   1.3.3 可升级   1.3.4 可扩展   1.3.5 可...

    1 python的三种类方法

    Python对象里有三类方法: 1 类方法 @classmethod :基于类的一些属性进行调用,第一个参数是cls 2 静态方法 @staticmethod: 本质上和普通函数没什么不同,归集到一个类下面,相当于整理 3 实例方法 :需要结合对象的...

    Python中用Decorator来简化元编程的教程

    少劳多得 Decorator 与 Python 之前引入的元编程抽象有着某些共同之处:即使没有这些技术,您也一样可以实现它们所提供的功能...这总是可能的,但这种功能主要是由 Python 2.2 中引入的 classmethod() 和 staticmethod

    Python核心编程第二版(ok)

    Python核心编程第二版(ok) 第1部分 Python核心  第1章 欢迎来到Python世界   1.1 什么是Python   1.2 起源   1.3 特点   1.3.1 高级   1.3.2 面向对象   1.3.3 可升级   1.3.4 可扩展   ...

    Python自定义装饰器原理与用法实例分析

    如常见的@classmethod,@staticmethod等都是装饰器,接下来记录下如何自定义个装饰器: 刚刚说过了,装饰器的本质就是一个函数,所有想要自定义一个装饰器,首先自定义一个函数 def decorate(func): def wrapper(*...

    Python语言高频重点汇总

    @staticmethod和@classmethod两个装饰器4. 类属性和实例属性5. Python的自省6. 列表、集合、字典推导式7. Python中单下划线和双下划线8. 格式化字符串中的%和format9. 迭代器和生成器10. args和**kwargs11. 面向切...

    Python核心编程(第二版).pdf (压缩包分2部分,第二部分)

    原书名: Core Python Programming (2nd Edition) 原出版社: Prentice Hall PTR 作者: (美)Wesley J. Chun 译者: 宋吉广 出版社:人民邮电出版社 ISBN:9787115178503 上架时间:2008-6-23 出版日期:2008 ...

    python装饰器decorator介绍

    一、装饰器decorator ... 比较常用的功能一般使用decorator来实现,例如python自带的staticmethod和classmethod。 装饰器有两种形式: 复制代码 代码如下: @A def foo():  pass 相当于: 复制代码 代码如下

Global site tag (gtag.js) - Google Analytics