Python 中类方法、类实例方法、静态方法有何区别?

实例方法

    定义:第一个参数必须是实例对象,该参数名一般约定为“self”,通过它来传递实例的属性和方法(也可以传类的属性和方法);

    调用:只能由实例对象调用。

类方法

    定义:使用装饰器@classmethod。第一个参数必须是当前类对象,该参数名一般约定为“cls”,通过它来传递类的属性和方法(不能传实例的属性和方法);

    调用:实例对象和类对象都可以调用。

静态方法

    定义:使用装饰器@staticmethod。参数随意,没有“self”和“cls”参数,但是方法体中不能使用类或实例的任何属性和方法;

    调用:实例对象和类对象都可以调用。

class Foo(object):  
    def test(self):          #//定义了实例方法  
        print("object")  
    @classmethod  
    def test2(clss):         #//定义了类方法  
        print("class")  
    @staticmethod  
    def test3():             #//定义了静态方法,静态方法实际上跟该类没有太大关系。

        print("static")  

 

实例方法  两种访问方式:

  1. ff.test();          #//通过实例调用  
  2. Foo.test(ff)     #//直接通过类的方式调用,但是需要自己传递实例引用  

类方法  两种访问方式:

  1. Foo.test2(); 

静态方法调用方式:

  1. Foo.test3()
    
  2.    ff.test();         #//通过实例调用  

你可能感兴趣的:(Python笔记)