Python的 函数、类方法、实例方法、静态方法


1、知识点^_^

  • 函数:我通常习惯把跟类无关叫成函数,而类里面实现的叫方法。
  • 类方法:也叫类型方法,在该方法上一行,用@classmethod进行标记。
    第一个参数强制为cls,类对象。能够经过这个类对象访问类属性,因为没有传入类实例对象,因此不能访问类实例属性。
  • 静态方法:用@staticmethod标记的方法。无内定的参数,类和实例均可以调用,方法有多少参数就必须传递多少参数。
  • 实例方法:没有@classmethod@staticmethod标记的方法是实例方法。
    第一个参数强制为self,类实例对象。能够经过这个类实例对象访问类属性,能够经过类实例对象的__class__属性访问类属性。
    假设该方法有n个参数,类型调用的时候须要给n个参数传参。而实例调用时则只能传n-1个参数,由于第一个参数被系统默认传递了实例自己。

2、举例说明

先来了解一下绑定的概念。函数

  • 绑定binding:它与方法调用相关联。
    首先该方法是类内部定义的函数,是类方法属性。
    类方法中,第一个参数都是self,表示调用此方法的实例对象,不须要赋值。
    且该方法只有在其所属类拥有实例对象时,才能被调用,即方法绑定到类实例对象上了。
    没有类实例对象时,方法就是未绑定状态。

上代码:code

def foo(x):                # 通常方法
    print "executing foo(%s)"%(x)
    
class A(object):           
    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()

一、 通常方法
此方法的工做跟类、实例均无关系。能够直接调用foo(x)。
二、 实例方法
在类里定义实例方法时第一个参数永远是实例变量self(绑定类的实例),实例方法的调用离不开实例,调用:a.foo(x),其中a是A的实例。
三、 类方法 @classmethod
类方法定义时须要去绑定类(即经过cls)。调用的时候传递的是类,调用:A.class_foo(x),其中A是类。
四、 静态方法@staticmethod
与普通方法同样,不须要对类或实例进行绑定,but调用时须要经过类或实例,调用:a.static_foo(x)或A.static_foo(x)。对象


❤ thanks for watching, keep on updating...
点个赞再走吧class

相关文章
相关标签/搜索