静态方法和类成员方法分别正在创建时分别装入 staticmethod 类型和 classmethod 类型的对象
使用装饰器(decorator)语法
'''#老方法__metaclass__ = typeclass MyClass: def smeth(): #静态方法定义没有self参数,且能够被类本身直接调用 print 'This is a static method' smeth = staticmethod(smeth) #静态方法在创建时装入 staticmethod 类型 def cmeth(cls): #类方法在定义时,需要名为 cls 的类似于 self 的参数,可以用类的对象调用 print 'This is a class method' cemth = classmethod(cmeth) #类成员方法在创建时换入 classmethod 类型'''#装饰器#它能对任何可调用的对象进行包装,既能够用于方法也能够用于函数#使 @ 操作符,在方法(或函数)的上方将装饰器列出,从而指定一个或者更多的装饰器(多个装饰器在应用时的顺序与指定顺序相反)__metaclass__= typeclass MyClass: @staticmethod #定义静态方法 def smeth(): print 'This is a static method' @classmethod #定义类方法 def cmethd(cls): print 'This is a class method',cls def instancefun(self): #实例方法 print '实例方法' def function(): #普通方法 print '普通方法'mc = MyClass()MyClass.smeth() #类和对象都可以调用静态方法mc.smeth()MyClass.cmethd() #类方法也可以直接被类调用MyClass().cmethd() #类方法被对象调用mc.instancefun() #对象调用实例方法mc.cmethd() #对象调用类方法#MyClass.instancefun() #类调用实例方法,报错#mc.function() #对象调用普通方法,报错
x
1
'''
2
#老方法
3
__metaclass__ = type
4
5
class MyClass:
6
7
def smeth(): #静态方法定义没有self参数,且能够被类本身直接调用
8
print 'This is a static method'
9
smeth = staticmethod(smeth) #静态方法在创建时装入 staticmethod 类型
10
11
def cmeth(cls): #类方法在定义时,需要名为 cls 的类似于 self 的参数,可以用类的对象调用
12
print 'This is a class method'
13
cemth = classmethod(cmeth) #类成员方法在创建时换入 classmethod 类型
14
15
'''
16
17
#装饰器
18
#它能对任何可调用的对象进行包装,既能够用于方法也能够用于函数
19
#使 @ 操作符,在方法(或函数)的上方将装饰器列出,从而指定一个或者更多的装饰器(多个装饰器在应用时的顺序与指定顺序相反)
20
21
__metaclass__= type
22
23
class MyClass:
24
25
@staticmethod #定义静态方法
26
def smeth():
27
print 'This is a static method'
28
29
@classmethod #定义类方法
30
def cmethd(cls):
31
print 'This is a class method',cls
32
33
def instancefun(self): #实例方法
34
print '实例方法'
35
36
def function(): #普通方法
37
print '普通方法'
38
39
40
mc = MyClass()
41
42
MyClass.smeth() #类和对象都可以调用静态方法
43
mc.smeth()
44
MyClass.cmethd() #类方法也可以直接被类调用
45
MyClass().cmethd() #类方法被对象调用
46
mc.instancefun() #对象调用实例方法
47
mc.cmethd() #对象调用类方法
48
49
#MyClass.instancefun() #类调用实例方法,报错
50
#mc.function() #对象调用普通方法,报错
51