绑定方法 binding method
绑定方法的定义方法
class CA:
def bind_method(self):#绑定方法,第一个参数必须是表示自身对象的self参数
print "I am bind method."
调用绑定方法的使用方法
obj = CA()
obj.bind_method() #对象调用绑定方法时,自动传入对象本身给self
CA.bind_method(obj) #类调用绑定方法时,必须显示传入对象给self
静态方法@staticmethod
静态方法的定义方法
以@staticmethod单独占一行,新起一行定义一个函数,函数不需要有self参数和cls参数。此函数就是静态方法。
其中@staticmethod为函数修饰符,表示紧跟定义的函数是静态方法。
class CA:
@staticmethod
def static_method() #静态方法,根本不需要self参数和cls参数
print "I am static method"
静态方法的使用方法
obj = CA()
obj.static_method() #对象调用静态方法
CA.static_method() #类调用静态方法
类方法@classmethod
类方法的定义方法
以@classmethod单独占一行,新起一行定义一个函数,函数需要有代表自身类的ls参数。此函数就是类方法。
其中@classmethod为函数修饰符,表示紧跟定义的函数是类方法。
class CA:
@classmethod
def class_method():#类方法,第一个参数必须是表示自身类的cls参数
print "I am class method"
类方法的使用方法
obj = CA()
obj.class_method()
CA.class_method()
示例代码
#ex_class_bind_static_class_method.py
self_file = __file__
class CA(object):
_ver = 1.0
def bind_method(self): #绑定方法,第一个参数必须是表示自身对象的self参数
print "invoke bind_method"
print CA._ver
@staticmethod
def static_method(): #静态方法,根本不需要self参数和cls参数
print 'invoke static_method'
print CA._ver
@classmethod
def class_method(cls): #类方法,第一个参数必须是表示自身类的cls参数
print 'invoke class_method'
print CA._ver
print cls._ver
cls().bind_method()
CA().bind_method()
###测试
a = CA()
print "\n=====invoke bind method====="
a.bind_method() #instance visit bind method
print "==="
CA.bind_method(a) #class visit bind method 等效 instance.bind_foo()
print "\n======invoke static method======"
a.static_method() #instance visit static method
print "==="
CA.static_method() #class visit static_method()
print "\n======invoke class method======"
a.class_method() #instance visit class method
print "==="
CA.class_method() #class visit class_method()
print "\nexit %s" % self_file
执行结果
(end)