我有一个框架(由程序员设计,被认为是我们组织中最有经验的人),它拥有我见过的最奇怪的结构。该框架有很多API,都具有相同的结构:
@incself
中,实际上是对函数本身的引用因为显然我是唯一认为这很奇怪的人,请帮助我。您是否有人使用/看过类似的方法,它可能带来哪些好处?
from functools import wraps
def incself(func):
@wraps(func)
def wrapper(*args, **kwds):
return func(func, *args, **kwds)
return wrapper
@incself
def apiFunc01(self, **kwargs):
for key, value in kwargs.items():
setattr(self, key, value)
#....
print('Connect to IP={0}, port={1}'.format(self.ip, self.port))
#....
if __name__ == '__main__':
# the API is called without the 'self' argument!!
apiFunc01(ip='2.3.4.5', port=2345)
谢谢!
答案 0 :(得分:0)
这是一种提醒最后一次召唤的方法:
>>>apiFunc01(ip='a', port=123)
Connect to IP=a, port=123
>>>apiFunc01()
Connect to IP=a, port=123
>>>apiFunc01(ip='2.3.4.5', port=123)
Connect to IP=2.3.4.5, port=123
>>>apiFunc01()
Connect to IP=2.3.4.5, port=123