chunjiekid 2019-06-28
@classmethod
进行标记。cls
,类对象。可以通过这个类对象访问类属性,由于没有传入类实例对象,所以不能访问类实例属性。@staticmethod
标记的方法。无内定的参数,类和实例都可以调用,方法有多少参数就必须传递多少参数。@classmethod
和@staticmethod
标记的方法是实例方法。self
,类实例对象。可以通过这个类实例对象访问类属性,可以通过类实例对象的__class__
属性访问类属性。先来了解一下绑定的概念。
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...
点个赞再走吧