# -*- coding: cp936 -*-
#类方法: 1.属性访问:可以访问类属性,无法访问实例属性
# 2.隐含调用参数:cls
# 3.可以被类和类实例调用
#实例方法:1.属性访问:可以访问类属性、实例属性
# 2.隐含调用参数:self
# 3.仅可以被类实例调用
#静态方法:1.属性访问:无法访问类属性、实例属性,放在类作用域里面的和类无关的函数
# 2.隐含调用参数:无
# 3.可以被类和类实例调用
class MyClass:
val1 = 'Value 1'
def instance_f(self, x):
self.val2 = 'Value 2'
print '实例方法, 实例:%s, val1:%s, val2:%s' %(str(self), self.val1, self.val2)
print "executing instance_f(%s,%s)\n" %(self,x)
@staticmethod #静态方法修饰符
def static_f(x):
print '静态方法,无法访问val1和val2'
print "executing static_f(%s)\n" %x
@classmethod #类方法修饰符
def class_f(cls, x):
print '类方法, 类:%s, val1:%s, 无法访问val2的值' %(str(cls), cls.val1)
print "executing class_f(%s,%s)\n" %(cls,x)
c = MyClass()
c.instance_f(1) #executing instance_f(<__main__.MyClass instance at 0x012EC0F8>,1)
c.static_f(1) #executing static_f(1)
MyClass.static_f(1) #executing static_f(1)
c.class_f(1) #executing class_f(__main__.MyClass,1)
MyClass.class_f(1) #executing class_f(__main__.MyClass,1)