内置装饰器的存在是方便在类里自定义的一个函数方法。
其中前两者@staticmethod和@classmethod它们使用时会有自己参数。而调用的时候也和普通函数方法不一样,类一般调用函数方法时是需要用实例化对象去调用,而通过内置装饰器,可以不需要实例化对象而直接去调用函数。而后者@property则是在调用函数方法时去掉了括号
@staticmethod和@classmethod调用的函数方法格式: 类名.方法名(参数1,参数2...)
@property调用函数格式: 实例化对象名.函数方法
示例如下:
#coding:utf-8
class people:
def __init__(self,name,age):
self.name = name
self.age = age
@staticmethod
def print_newname(x,y):
print "参数不需要带self,调用参数时可以直接使用参数,我是%s,而我是%s" %(x,y)
@classmethod
def print_newage(cls,newage):
print "参数默认带cls,调用参数时可以直接使用参数,我今年%d" %newage
@property
def print_age(self):
print "%s的年龄为%d" %(self.name,self.age)
people.print_newname("张三","李四") #通过类直接调用函数,不需要实例化对象
people.print_newage(18) #通过类直接调用函数,不需要实例化对象
people1=people("小明",27) #实例化对象
people1.print_age #注意这里使用@property后,调用该函数后面不需要加括号
打印结果如下:
参数不需要带self,调用参数时可以直接使用参数,我是张三,我是李四
参数默认带cls,调用参数时可以直接使用参数,我今年18
小明的年龄为27