python 类方法,实例方法,静态方法区别

image.png
# coding=utf-8
class A(object): 
    def __init__(self, x=0):
        self.x = x

    #类实例方法  # 最常见的实例方法
    def foo(self, y=0):
        print self.x, y

    #类方法  # cls即为类自身
    @classmethod   
    def class_foo(cls, x=1, y=1):  
        return cls(x)  # 因为类方法可以传参一个cls参数,所以可以调用类的相关信息,而静态方法是一个独立的函数,也是可以调用的,这里为了简单,没有调用静态方法

    #静态方法   # 不能传递和类或实例相关的参数,如cls或self,但可以传递其他参数
    @staticmethod  
    def static_foo(x=2):  
        return A(x)

所以逻辑上,类方法应当只被类调用,实例方法实例调用,静态方法两者都能调用。主要区别在于参数传递上的区别,实例方法悄悄传递的是self引用作为参数,而类方法悄悄传递的是cls引用作为参数。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,868评论 0 9
  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 4,271评论 4 16
  • 我们常常会听说 Objective-C 是一门动态语言,那么这个「动态」表现在哪呢?我想最主要的表现就是 Obje...
    Ethan_Struggle阅读 2,244评论 0 7
  • 小时候爸妈总喜欢把我们和别人家的孩子比,常能听到,你学学xx家的孩子,人家多乖,多听话,学习成绩又好。这些话陪伴着...
    kkkkey阅读 150评论 0 0
  • 莫名其妙,休息了两天居然感冒了,真是服了…今天早上起来嗓子疼的厉害,然后上班叫了个外卖,买了个药,喝了以后好点了,...
    熊猫掰棒子阅读 147评论 0 0