【python】classmethod 和staticmethod
来源:互联网 发布:淘宝不能用手机号登陆 编辑:程序博客网 时间:2024/05/14 15:35
对于classmethod和staticmethod 是之前学类的时候看了一下,知道是类成员方法和静态方法,今天又看到类方法,然后又搜了下,发现自己了解的并不透彻,所以总结一下。
首先classmethod 是类方法,所谓的类方法就是它的第一个参数是本类,是当前的类,它仅仅与类交互,而并不与实例进行交互。所以它是不可以访问实例变量的,但是它可以访问类变量。
对于staticmethod是静态方法,它不用传入self。而且它不可以调用类和实例中的变量。可以理解成它只是在类作用域中的一个函数而已。
普通方法:由对象调用;至少一个self参数;执行普通方法时,自动将调用该方法的对象赋值给self;
类方法:由类调用; 至少一个cls参数;执行类方法时,自动将调用该方法的类复制给cls;
静态方法:由类调用;无默认参数;(可以类比下静态属性啊)
在python2.4以后 我们可以使用生成器来实现静态方法和类成员方法。
下面是一个例子:
class MyClass: val1 = 'Value 1' def __init__(self): self.val2 = 'Value 2' @staticmethod def staticmd(): print '静态方法,无法访问val1和val2' @classmethod def classmd(cls): print '类方法,类:' + str(cls) + ',val1:' + cls.val1 + ',无法访问val2的值'
另外,知乎上有一篇很好的文章来讲解这个,图解很好,可以看下。
https://www.zhihu.com/question/20021164
0 0
- python staticmethod和classmethod
- Python @staticmethod和@classmethod
- 【python】classmethod 和staticmethod
- python classmethod和staticmethod
- python的staticmethod和classmethod
- Python中的staticmethod和classmethod
- Python中的staticmethod和classmethod
- Python 中的 classmethod 和 staticmethod
- Python @classmethod和@staticmethod区别
- python 中staticmethod和classmethod
- Python 中的 classmethod 和 staticmethod
- 理解python:@classmethod 和@staticmethod
- Python 中的 @staticmethod 和 @classmethod
- python的@classmethod和@staticmethod
- [python相关]Python中的staticmethod和classmethod
- Python 实例方法、@staticmethod和@classmethod
- Python @staticmethod 和 @classmethod 的异同
- 【Python】Staticmethod和classmethod的区别
- MySQL数据库的增删改查
- HBase HA 集群启动 报错 java.net.UnknownHostException: HadoopCluster
- 学习心得——ActionContext、StackContext和ValueStack
- sql 总结
- 黑白棋经典残局(10)
- 【python】classmethod 和staticmethod
- DDoS攻击测试工具大合集
- Android PopupWindow使用详解
- C++Primer课后题11.0、11.31
- POJ3279-Fliptile【反转问题】
- iOS - 程序设计之完全自定义tabBarController
- jquery-form中ajaxSubmit提交文件,以及解决ie9下上传文件后自动下载问题
- AndroidStudio中导入jar包和类库
- Adapter的简单封装