import time
boy_age = []
girl_age = []
def fenlei(sex):
def outer(func):
def deco(*args,**kwargs):
if sex == "boy":
ret = func(*args,**kwargs)
boy_age.append(args[1])
print("I am a boy,our boys's ages are %s" % str(boy_age))
return ret
else:
ret = func(*args,**kwargs)
girl_age.append(args[1])
print("I am a girl,our boys's ages are %s" % str(girl_age))
return ret
return deco
return outer
@fenlei("boy")
def child1(name,age):
print("my name is %s,I am %s years old" % (name,age))
return "from child1"
@fenlei("girl")
def child2(name,age):
print("my name is %s,I am %s years old" % (name,age))
return "child2"
@fenlei("boy")
def child3(name,age):
print("my name is %s,I am %s years old" % (name,age))
return "child2"
print(child1("Tom",7))
child2("Anna",8)
child3("jack",9)
-----------------------------
my name is Tom,I am 7 years old
I am a boy,our boys's ages are [7]
from child1
my name is Anna,I am 8 years old
I am a girl,our boys's ages are [8]
my name is jack,I am 9 years old
I am a boy,our boys's ages are [7, 9]
这类装饰器的里面嵌套了2个函数,给需要装饰的函数添加一个分类的功能,确定这些child是男孩还是女孩。