Python 类方法、实例方法、静态方法

 class A(object):  
  #类属性
  name
  score

def __init__(self, name, score): 
    #实例属性
      self.name = name 
      self.score = score
    
def foo(self,x):  
#类实例方法  
    print "executing foo(%s,%s)"%(self,x)  

@classmethod  
def class_foo(cls,x):  
#类方法  
    print "executing class_foo(%s,%s)"%(cls,x)  

@staticmethod  
def static_foo(x):  
#静态方法  
    print "executing static_foo(%s)"%x  

调用方法:
a = A()
a.foo(1) //print : executing foo(<main.A object at 0xb77d67ec>,1)

a.class_foo(1) //executing class_foo(<class 'main.A'>,1)
A.class_foo(1) //executing class_foo(<class 'main.A'>,1)

a.static_foo(1) //executing static_foo(1)
A.static_foo(1) //executing static_foo(1)

区别:
类方法和静态方法都可以被类和类实例调用,类实例方法仅可以被类实例调用
类方法的隐含调用参数是类,而类实例方法的隐含调用参数是类的实例,静态方法没有隐含调用参数

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,796评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,166评论 18 399
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,861评论 0 9
  • 小编费力收集:给你想要的面试集合 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JA...
    八爷君阅读 10,198评论 1 114
  • 西伯利亚的风掠过北屯戈壁 卷起沙尘击打风车 远方的云朵贴在地平线上 好似乌黑的山峦 迷惑了游人 额尔齐斯河流经荒芜...
    fengtele阅读 5,442评论 0 2