个人理解,若有误,望指正,多谢!
实例方法(obj_func)和实例变量(var)需要绑定到实例,实例方法可以调用实例变量、类变量和实例方法、静态方法、类方法
静态方法:静态方法是一种普通函数,就位于类定义的命名空间中,它不会对任何实例类型进行操作。使用装饰器@staticmethod定义静态方法。类对象和实例对象都可以调用静态方法。但是静态方法不能调用任何对象。
类方法是将类本身作为对象进行操作的方法。类方法使用@classmethod装饰器定义,其第一个参数是类,约定写为cls。类对象和实例都可以调用类方法、静态方法
class MyClass(): cvar=12 def __init__(self): self.var=self.stafunc() def obj_func(self): print "I'm a obj func" print self.var,self.cvar self.classfunc() self.stafunc() @staticmethod def stafunc(): print "I'm a static func" return 2 @classmethod def classfunc(cls): print "class var:%d"%cls.cvar cls.stafunc() #cls.obj_func() unbound method obj_func() must be called with MyClass instance as first argument (got nothing instead) myobj=MyClass() print myobj.var myobj.obj_func() myobj.stafunc() myobj.classfunc() print myobj.cvar print MyClass.cvar MyClass.stafunc() MyClass.classfunc() #print MyClass.var AttributeError: class MyClass has no attribute 'var' #MyClass.obj_func() unbound method obj_func() must be called with MyClass instance as first argument (got nothing instead) ''' I'm a static func 2 I'm a obj func 2 12 class var:12 I'm a static func I'm a static func I'm a static func class var:12 I'm a static func 12 12 I'm a static func class var:12 I'm a static func '''