python中 classmethod、staticmethod和普通方法的区别
来源:互联网 发布:linux ssh配置 编辑:程序博客网 时间:2024/05/19 04:51
python中 classmethod、staticmethod和普通方法的区别
这三种方法在类和实例中都存在,都可被调用,但调用的时候默认默认传递的参数不同。
对于classmethod方法
当实例调用classmethod方法时,默认会把当前实例所对应的类传进去
当类调用classmethod方法时,默认把此类传进去
对于staticmethod方法
实例和类调用,没有默认的参数传进函数
对于普通方法
当实例调用时,默认将当前实例传进去
类调用时,只能以 类名.method(类实例) 形式调用
下面通过一个例子清楚说明具体调用情况:
class Locker(object): a = 'aa' @staticmethod def show(): print 'show' @classmethod def display(cls): print 'display' def out(self): print 'out'cc = Locker()#Locker.show()cc.show()#Locker.display()cc.display()#Locker.out(cc)cc.out()
运行结果:
showshowdisplaydisplayoutout
我们修改classmethod方法:
class Locker(object): a = 'aa' @staticmethod def show(): print 'show' @classmethod def display(cls): print cls.a def out(self): print 'out'cc = Locker()cc.a = 'vv'#Locker.display()cc.display()
结果:
aaaa
可见当实例调用classmethod方法时,默认传入的参数是实例对应的类
总结:
classmethod 和普通函数调用时都有默认参数传入,只有staticmethod调用时没有任何默认参数传入
0 0
- python 中 @classmethod 、staticmethod 和 普通方法 的区别
- python中 classmethod、staticmethod和普通方法的区别
- Python中classmethod, staticmethod和普通method的区别
- python中staticmethod和classmethod的区别
- python中classmethod和staticmethod的区别
- python中staticmethod和classmethod的区别
- python中staticmethod classmethod及普通函数的区别
- python中staticmethod classmethod及普通函数的区别
- python中staticmethod classmethod及普通函数的区别
- 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中@classmethod @staticmethod区别
- CF652 C ma~ 对我来说只要是牵扯到方法的题目都是好题
- 反射+多态实现0判断更具不同类型排序
- 网关高可用协议:HSRP、VRRP、GLBP、CASP
- Javascript 严格模式详解
- Android入门之理解Task
- python中 classmethod、staticmethod和普通方法的区别
- Visual Studio——设置缩进
- RecycleView 实现瀑布流 添加分隔
- JVM--内存调优
- ThreadLocal(1)
- c++ 删除空格的函数
- hrbust 2162 哈理工oj 2162 【分形图、搜索】
- andbase学习笔记六
- alertController和UIAlertView 使用示例