[总结]python 静态方法与类方法
2012-02-21 21:48
260 查看
1. 对象方法有self参数,类方法有cls参数,静态方法是不需要这些附加参数的。
2. @staticmethod和@classmethod都是用来定义静态函数的。
相同点:
都不用实例化类,可以直接用类名来调用其相关属性。
不同点:
@classmethod的第一个参数是cls,因此可以访问类变量,或是用作类厂。
@staticmethod只是自身代码在类里面,对类的其它再无相关。
3. 一般情况下用@classmethod,@staticmethod只适用于不想定义全局函数的情况。
4. 类方法可以访问per-class的数据。举个不实际的例子:
2. @staticmethod和@classmethod都是用来定义静态函数的。
相同点:
都不用实例化类,可以直接用类名来调用其相关属性。
不同点:
@classmethod的第一个参数是cls,因此可以访问类变量,或是用作类厂。
@staticmethod只是自身代码在类里面,对类的其它再无相关。
3. 一般情况下用@classmethod,@staticmethod只适用于不想定义全局函数的情况。
4. 类方法可以访问per-class的数据。举个不实际的例子:
>>> class Named(object): ... @classmethod ... def name(cls): ... return cls.__name__ ... >>> class Sub(Named): ... pass ... >>> obj = Sub() >>> obj.name() 'Sub'
------------------------------------------------------------------------------------------------------------------------------
第一种方式(staticmethod): >>> class Foo: str = "sample." def bar(): print Foo.str bar = staticmethod(bar) >>> Foo.bar() sample. 第二种方式(classmethod): >>> class Foo: str = "sample." def bar(cls): print cls.str bar = classmethod(bar) >>> Foo.bar() sample. --------------------------------------------------------------- 上面的代码我们还可以写的更简便些: >>> class Foo: str = "sample." @staticmethod def bar(): print Foo.str >>> Foo.bar() sample. 或者 >>> class Foo: str = "sample." @classmethod def bar(cls): print cls.str >>> Foo.bar() sample
相关文章推荐
- Python的类方法,静态方法,实例方法,类变量,实例变量,静态变量的总结
- python中的实例方法、静态方法、类方法、类变量和实例变量浅析
- PHP针对伪静态的注入总结【附asp与Python相关代码】
- python中的实例方法、静态方法、类方法、类变量和实例变量浅析
- python学习笔记--类方法、对象方法、静态方法
- Python 静态方法 类方法 实例方法
- Asp.net AJAX调用后台静态方法总结
- Python list方法总结
- python实例方法,静态方法,类方法
- Python 类方法,静态方法,实例化方法
- python文件目录操作常用方法总结
- python中的实例方法、静态方法、类方法、类变量和实例变量浅析
- python中的静态成员方法 和 类成员方法
- python脚本——re.match()和re.research()方法总结
- python实例方法、类方法和静态方法
- Python 3.x 控制台输入密码的方法总结
- python打开网页获取网页内容方法总结
- Python——class的基础知识(Python的实例方法,类方法,静态方法之间的区别及调用关系)
- python学习(三)----集合类型内建方法总结
- Python使用爬虫爬取静态网页图片的方法详解