python中有三种调用method的方法:普通method,staticmethod和classmethod

正常的类对象,self, 而classmethod要传入类, staticmethod不用传。

staticmethod不能访问类成员变量。

class MethodTest():

var1 = "class var"

def __init__(self, var2 = "object var"):

self.var2 = var2

@staticmethod

def staticFun():

print 'static method'

@classmethod

def classFun(cls):

print 'class method'

staticmethod和classmethod的相同点:

1.都可以通过类或实例调用

mt = MethodTest()

MethodTest.staticFun()

mt.staticFun()

MethodTest.classFun()

mt.classFun()

2.都无法访问实例成员

@staticmethod

def staticFun():

print var2  //wrong

@classmethod

def classFun(cls):

print var2  //wrong

staticmethod和classmethod的区别:

1.staticmethod无需参数,classmethod需要类变量作为参数传递(不是类的实例)

def classFun(cls):

print 'class method'  //cls作为类变量传递

2.classmethod可以访问类成员,staticmethod则不可以

@staticmethod

def staticFun():

print var1  //wrong

@classmethod

def classFun(cls):

print cls.var1  //right

python classmethod static_python @classmethod 和 @staticmethod相关推荐

  1. python classmethod static_python classmethod和 staticmethod的心得

    这两个装饰器是Python自带的,虽然一直都知道装饰器是怎么用的,但是确实不知道何时去使用它们,今天看到某人用到了,又看了一遍,才有所收货. 其实我们几乎可以不用这两个装饰器,总有办法解决问题,所以让 ...

  2. python中的@classmethod的作用

    推荐 <Python 中的 classmethod 和 staticmethod 有什么具体用途?> 一.简介 1.1 描述 classmethod 修饰符对应的函数不需要实例化,不需要 ...

  3. python classmethod_对Python中的@classmethod用法详解

    在Python面向对象编程中的类构建中,有时候会遇到@classmethod的用法. 总感觉有这种特殊性说明的用法都是高级用法,在我这个层级的水平中一般是用不到的. 不过还是好奇去查了一下. 大致可以 ...

  4. 关于Python中的classmethod

    Python 中的 classmethod classmethod: 作用是直接将自己的类对象,传给类方法. 一.classmethod 1)不用classmethod的时候 你的代码可能是这样写的, ...

  5. python知识:@classmethod和@staticmethod的异同

    1 说明 @staticmethod的意思就是将后面的函数转化成静态函数. 大多数情况,@classmethod和@staticmethod效果一样.但是那不是正题,正式作用是类工厂,如果有类继承关系 ...

  6. python中@staticmethod_Python中的@staticmethod和@classmethod的区别

    一直搞不明白,类方法和静态方法的区别,特意研究了一下,跟大家分享一下. 为了方便大家了解两者的差别,以下的示例代码将有助于发现其中的差别: class A(object): def foo(self, ...

  7. python静态方法的作用_@staticmethod和@classmethod如何作用于python中的...

    您的类方法和静态方法都只能更改类级变量.问题是这样做时,您已经在实例变量s1中隐藏了类变量num: s1.num = s1.num + 5 这将创建一个实例变量,该实例变量遮盖了实例名称空间中的类变量 ...

  8. Python中的@classmethod修饰符

    classmethod修饰符对应的函数不需要实例化,不需要self参数,但第一个参数需要是表示自身类的cls参数,可以来调用类的属性,类的方法,实例化对象等 class A(object):bar = ...

  9. python中静态变量和静态方法_【开发者笔记】python中的类方法(@classmethod)和静态方法(@staticmethod)...

    在java.c#等高级语言中我们用static来定义静态方法和静态变量,那么在python中如何定义静态方法和静态变量呢. python提供了@classmethod和@staticmethod来定义 ...

最新文章

  1. ORB_SLAM2 定位模式
  2. 不提供账号注销等于耍流氓
  3. Nature调查 l 中国博士生们的科研围城
  4. 4G EPS 的架构模型
  5. Spring or hibernate saveOrUpdateAll 偶然失效
  6. Ruby中require,load,和include的区别
  7. 获取浏览器书签、浏览器文件夹数据
  8. 告别相杀!面向对象和函数式编程共存
  9. 用Python写一个简单的监控系统
  10. ANSYS19.0安装(无比详细的图文示范教程)
  11. Ubuntu16.04 安装国内版火狐浏览器,同步标签
  12. MaxScript学习 | 创建石头
  13. 中国5G牌照或于今日发放 我国将正式进入5G时代
  14. google浏览器缓存文件在哪里
  15. 机械臂力控----积分自适应导纳控制
  16. 大数据处理与分析方向主要干什么_大数据分析_方向_方法与工具
  17. python实现百万英雄答题神器
  18. C++的成员函数指针简要
  19. 【Vue】Vue打包文件后需要添加版本号Version,来防止更新后的页面有缓存
  20. 三星i908、iPhone3G对比评测

热门文章

  1. 平滑滤波器模板尺寸与平滑效果的关系_用PPT基础功能,教你打造发布会效果,这骚操作谁顶得住啊?...
  2. Freeswitch NAT问题
  3. 实例:用户登录(python 版)
  4. Maven中dependencyManagement标签和dependencies的区别
  5. UpdatePanel 的 UpdateMode 和 ChildrenAsTriggers(较好的总结了前面几篇博客的内容)
  6. 强化学习《基于价值 - Dueling Q-Learning》
  7. 漫步最优化九——泰勒级数
  8. 深度学习-Tensorflow1.x-CNN中的padding参数
  9. Pytorch —— 损失函数(二)
  10. 操作系统 ——进程的状态与转换