Python语言学习讲解二:@staticmethod和@classmethod的作用与区别
2016-11-16 09:22
836 查看
一般来说针对于类来说方法的分类:成员方法、静态方法、类方法等
成员方法:使用的时候需要需要先实例化一个对象再调用方法。静态方法:使用@staticmethod修改的方法
类方法:使用@classmethod修改的方法
使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用。
这有利于组织代码,把某些应该属于某个类的函数给放到那个类里去,同时有利于命名空间的整洁。
静态方法和 类方法区别:
@staticmethod:无self参数、无cls参数,就跟使用函数一样。
@classmethod:无self参数,但第一个cls参数。
@staticmethod方法内要调用到这个类的一些属性方法,只能直接类名.属性名或类名.方法名。
@classmethod因为持有cls参数,可以来调用类的属性,类的方法,实例化对象等,避免硬编码。
下面上代码。
[python] view
plain copy
1. class MyClass(object):
2. a= 1
3. def f1(self):
4. print 'f1'
5.
6. @staticmethod
7. def static_f1():
8. print 'static_f1'
9. print MyClass.a
10.
11. @classmethod
12. def class_f1(cls):
13. print 'class_f1'
14. print cls.a
15. cls().f1()
16.
17. A.static_f1()
18.A.class_f1()
输出
static_f1
1
class_f1
1
f1
相关文章推荐
- python staticmethod,classmethod方法的使用和区别以及property装饰器的作用
- Python语言学习讲解八:类型判断type与isinstance的区别
- Python - 静态函数(staticmethod), 类函数(classmethod), 成员函数 区别(完全解析)
- python中classmethod和staticmethod的区别
- Python语言学习讲解十三:python之多进程和多线程
- python学习系列---staticmethod和classmethod
- Python语言学习讲解十七:python之__gettattr__、__getattribute__和__setattr__详解
- 【Python】Staticmethod和classmethod的区别
- Python语言学习讲解十四:python之用纯属性取代get和set方法
- Python语言学习讲解十:列表推导式
- python学习系列---staticmethod和classmethod
- python------@staticmethod和@classmethod的作用与区别
- Python语言学习讲解三:详解Python中的split()函数的使用方法
- Python语言学习讲解十五:水印工具制作
- 飘逸的python - @staticmethod和@classmethod的作用与区别
- python中 classmethod、staticmethod和普通方法的区别
- Python中classmethod, staticmethod和普通method的区别
- Python语言学习讲解五:列表(List)操作方法详解
- Python语言学习讲解十八: __new__、__init__、__call__之详解
- Python语言学习讲解十六:python之描述符__set__和__get__ 等解释