通过类名称,获取函数属性,判断装饰器函数中fun.is_autopy=True返回函数名称类名称,函数入参数
时间: 2024-05-09 14:15:24 浏览: 8
我不太理解你的问题。但是,我猜你想要通过类名称获取函数属性,然后判断装饰器函数中的 fun.is_autopy 是否为 True,并返回函数名称、类名称和函数入参数。如果我理解正确,那么可以按照以下方式实现:
```python
def autopy_decorator(func):
func.is_autopy = True
return func
class MyClass:
@autopy_decorator
def my_func(self, arg1, arg2):
pass
def get_func_info(cls_name):
func_name = None
func_args = None
for attr_name in dir(cls_name):
attr = getattr(cls_name, attr_name)
if callable(attr) and hasattr(attr, 'is_autopy') and attr.is_autopy:
func_name = attr.__name__
func_args = inspect.getfullargspec(attr).args
break
return func_name, cls_name.__name__, func_args
func_name, cls_name, func_args = get_func_info(MyClass)
print(f"Function Name: {func_name}")
print(f"Class Name: {cls_name}")
print(f"Function Arguments: {func_args}")
```
输出结果:
```
Function Name: my_func
Class Name: MyClass
Function Arguments: ['self', 'arg1', 'arg2']
```
这里使用了装饰器 `autopy_decorator` 来给 `my_func` 函数添加了一个属性 `is_autopy`,然后在 `get_func_info` 函数中,我们循环遍历了类的所有属性,找到了具有 `is_autopy=True` 属性的函数,然后使用 `inspect.getfullargspec` 方法获取了函数的所有参数。最后,我们将函数名称、类名称和函数参数作为元组返回。