# 第一题
def dan_li(cls):
instances = {}
def get_instance(*args, **kwargs):
if cls not in instances:
instances[cls] = cls(*args, **kwargs)
return instances[cls]
return get_instance
@dan_li
class MyTest(object):
def __init__(self,name):
self.name = name
def __call__(self, *args, **kwargs):
print("练习 call 方法")
def run(self):
print(self.name)
m = MyTest("shizi")
m.run()
m = MyTest("laoshu")
m.run()
# 第二题
class Test(object):
def __init__(self,func):
self.func = func
self.name =None
def __call__(self, *args, **kwargs):
self.name = "ff"
if self.check_name():
print("欢迎")
return self.func( *args, **kwargs)
else:
print("再见")
def check_name(self):
if self.name == "ff":
return True
else:
print("名字错误")
@Test
def sum(a,b):
print("测试")
return a+b
@Test
def info():
print("测试")
s = sum(2,3)
print(s)
info()
原文:https://www.cnblogs.com/666666pingzi/p/10903413.html