python的注解是通过装饰器模式实现的,@注解本质是一个函数
def my_annotation(**kwds):
def decorate(fn):
for item in kwds.items():
print(item)
return fn
return decorate
@my_annotation(value="this is a annotation", author="Jack")
def test_annotation():
print("test...")
if __name__ == "__main__":
annos = test_annotation.__annotations__
print(annos)
打印结果:
('value', 'this is a annotation')
('author', 'Jack')
{}
上述结果可以理解为将注解信息 { value="this is a annotation", author="Jack" } 作为参数传到my_annotation函数中,将test_annotation函数作为参数传到装饰器函数decorate中
注意decorate这里返回的是fn函数本身,因为你返回什么,加了注解的test_annotation就会变成什么,返回str,则test_annotation将不再是函数,而是str,因此test_annotation.__annotations__会报错不存在该属性&#

本文详细探讨了Python注解的实现原理,通过装饰器模式展示了如何将注解信息注入到方法中。实例展示了如何利用注解进行代码分析,如获取作者信息,并根据作者进行代码评估。此外,还强调了在实际框架开发中动态获取注解信息的重要性。
最低0.47元/天 解锁文章
1776

被折叠的 条评论
为什么被折叠?



