怎么在修饰器中获取参数类型提示?

本教程将介绍如何在修饰器中获取参数类型提示?的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

怎么在修饰器中获取参数类型提示? 教程 第1张

问题描述

怎么执行以下操作:

import typing

def needs_parameter_type(decorated):
 def decorator(*args):
  [do something with the *type* of bar (aka args[0]), some_class]
  decorated(*args)
 return decorator

@needs_parameter_type
def foo(bar: SomeClass):
 …

foo(…)

使用案例是为了避免以下重复:

@needs_parameter_type(SomeClass)
def foo(bar: SomeClass):
 …

推荐答案

它们存储在函数的__annotations__属性中,您可以通过以下方式访问它们:

def needs_parameter_type(decorated):
 def decorator(*args):
  print(decorated.__annotations__)
  decorated(*args)
 return decorator

@needs_parameter_type
def foo(bar: int):
pass

foo(1)
#  {"bar": <class "int">}

好了关于怎么在修饰器中获取参数类型提示?的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。