Python的 函数、类方法、实例方法、静态方法
一、知识点^_^
- 函数:我一般习惯把跟类无关叫成函数,而类里面实现的叫方法。
- 类方法:也叫类型方法,在该方法上一行,用
@classmethod
进行标记。
第一个参数强制为cls
,类对象。可以通过这个类对象访问类属性,由于没有传入类实例对象,所以不能访问类实例属性。 - 静态方法:用
@staticmethod
标记的方法。无内定的参数,类和实例都可以调用,方法有多少参数就必须传递多少参数。 - 实例方法:没有
@classmethod
和@staticmethod
标记的方法是实例方法。
第一个参数强制为self
,类实例对象。可以通过这个类实例对象访问类属性,可以通过类实例对象的__class__
属性访问类属性。
假设该方法有n个参数,类型调用的时候需要给n个参数传参。而实例调用时则只能传n-1个参数,因为第一个参数被系统默认传递了实例本身。
二、举例说明
先来了解一下绑定的概念。
- 绑定binding:它与方法调用相关联。
首先该方法是类内部定义的函数,是类方法属性。
类方法中,第一个参数都是self
,表示调用此方法的实例对象,不需要赋值。
且该方法只有在其所属类拥有实例对象时,才能被调用,即方法绑定到类实例对象上了。
没有类实例对象时,方法就是未绑定状态。
上代码:
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()
1、 一般方法
此方法的工作跟类、实例均无关系。可以直接调用foo(x)。
2、 实例方法
在类里定义实例方法时第一个参数永远是实例变量self(绑定类的实例),实例方法的调用离不开实例,调用:a.foo(x),其中a是A的实例。
3、 类方法 @classmethod
类方法定义时需要去绑定类(即通过cls)。调用的时候传递的是类,调用:A.class_foo(x),其中A是类。
4、 静态方法@staticmethod
与普通方法一样,不需要对类或实例进行绑定,but调用时需要通过类或实例,调用:a.static_foo(x)或A.static_foo(x)。
❤ thanks for watching, keep on updating...
点个赞再走吧
相关推荐
codeAB 2020-01-19
wangqing 2020-01-18
bcbeer 2017-07-15
Crazyshark 2020-09-05
linjava 2020-06-14
一个逗逗 2020-04-16
Ericbig 2020-03-03
doubinning 2020-02-18
猛禽的编程艺术 2019-12-19
bryantmeng 2019-11-21
bestallen 2019-11-04
小小狐狸 2019-09-29
hzq0 2020-10-05
willowwgx 2020-07-27
tuxlcsdn 2020-06-13
池塘 2020-06-07
liqinglin0 2020-06-01