staticmethod, classmethod 分别被称为静态方法和类方法。
staticmethod
基本上和一个全局函数差不多,只不过可以通过类或类的实例对象(python里说光说对象总是容易产生混淆,
因为什么都是对象,包括类,而实际上类实例对象才是对应静态语言中所谓对象的东西)来调用而已,
不会隐式地传入任何参数。这个和静态语言中的静态方法比较像。
classmethod
是和一个class相关的方法,可以通过类或类实例调用,并将该class对象(不是class的实例对象)隐式地
当作第一个参数传入。就这种方法可能会比较奇怪一点,不过只要你搞清楚了python里class也是个真实地
存在于内存中的对象,而不是静态语言中只存在于编译期间的类型,就好办了。
正常的方法就是和一个类的实例对象相关的方法,通过类实例对象进行调用,并将该实例对象隐式地作为第一个参数传入,这个也和其它语言比较像。
区别:类方法需要额外的类变量cls,当有之类继承时,调用类方法传入的类变量cls是子类,而不是父类。类方法和静态方法都可以通过类对象和类的 实例对象访问。
①静态方法
>>> class Foo:
str = "I'm a static method."
def bar():
print Foo.str
bar = staticmethod(bar)
>>> Foo.bar()
I'm a static method.
②类方法
>>> class Foo:
str = "I'm a static method."
def bar(cls):
print cls.str
bar = classmethod(bar)
>>> Foo.bar()
I'm a static method.
上面的代码我们还可以写的更简便些(python2.4+新语法):
①静态方法
>>> class Foo:
str = "I'm a static method."
@staticmethod
def bar():
print Foo.str
>>> Foo.bar()
I'm a static method.
②类方法
>>> class Foo:
str = "I'm a static method."
@classmethod
def bar(cls):
print cls.str
>>> Foo.bar()
I'm a static method.
转自:http://hi.baidu.com/wutaof509/blog/item/b6687f299f6e6123d42af1bf.html
分享到:
相关推荐
主要介绍了关于Python中静态方法与类成员的相关资料,文中通过示例代码给大家详细总结了两者在语法和使用上的区别,有需要的朋友可以参考借鉴,下面来一起看看吧。
本文实例讲述了Python实例方法、类方法、静态方法的区别与作用。分享给大家供大家参考,具体如下: Python中至少有三种比较常见的方法类型,即实例方法,类方法、静态方法。它们是如何定义的呢?如何调用的呢?它们...
在这个文件中,可以像 Java 中的静态方法一样,定义函数或类方法,只需在函数名或方法名前加上 @staticmethod 或者不加,即可定义成静态方法,无需实例化相关对象即可直接调用。 在 Python 中,可以使用模块(Module...
何时定义静态方法和类方法:当你的某个函数与其它函数没有任何关系,就可以定义,静态方法和类方法只是为了方便调用,不需要创建实例,直接类名.函数名就可以调用。 静态方法 静态方法为类所有,可以通过对象来使用...
主要介绍了Python 类方法和实例方法(@classmethod),静态方法(@staticmethod),结合实例形式分析了Python 类方法和实例方法及静态方法相关原理、用法及相关操作注意事项,需要的朋友可以参考下
类方法和静态方法;类方法是类所拥有的方法,需要用修饰器“@classmethod”来标识其为类方法。对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数(同self一样只是一个习惯),能够通过对象名调用类方法,...
主要介绍了Python 静态方法和类方法,结合实例形式分析了Python类、实例、静态方法等相关概念、原理与使用技巧,需要的朋友可以参考下
python中的对象方法、类方法、静态方法的区别以及python代码示例
python局部变量全局变量-静态方法-实例变量静态变量代码解析。
面向对象的三大特性是指:封装、继承和多态。 Python3 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象
本篇文章是上一篇:初学者python笔记(面向对象编程、类与对象)的后续篇,是关于Python中面向对象编程的更深入分析,主要总结了类的三大方法:静态属性、类方法、类的组合方面的重点知识 类的三大方法 Ps:请先看...
刚接触Python中的面向对象,对于类方法和静态方法难以区分,通过查找知乎、CSDN论坛,废了好大的劲思路才逐渐明朗,所以就总结顺便分享一下。 首先开始编辑代码 # 普通方法、类方法、静态方法的比较 # 普通方法、...
第七周-第03章节-Python3.5-静态方法、类方法、属性方法.avi
本文实例讲述了Python面向对象程序设计之静态方法、类方法、属性方法原理与用法。分享给大家供大家参考,具体如下: 前言:认为方法与函数同意义,由于这里使用method,所以称为方法 静态方法: 使用@staticmethod...
主要介绍了python类和函数中使用静态变量的方法,实例分析了三种常用的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
本文实例讲述了Python面向对象之静态属性、类方法与静态方法。分享给大家供大家参考,具体如下: 1. 静态属性:在函数前加@property,将函数逻辑”封装“成数据属性,外部直接调用函数名,如同调用属性一样。这个...
ython 类语法中有三种方法,实例方法,静态方法,类方法。 ps.python中self,cls的区别 普通实例方法,第一个参数需要是self,它表示一个具体的实例本身。 如果用了staticmethod,那么就可以无视这个self,而将这...
python中实现静态方法和类方法都是依赖于python的修饰器来实现的。 对象方法有self参数,类方法有cls参数,静态方法是不需要这些附加参数的。 1、我们已经讨论了类/对象可以拥有像函数一样的方法,这些对象方法与...