python-3.x - 如何通过其方法获取类对象?,尝试使用 dir() 和 __class__,但它输出
问题描述
如何通过其方法获取类对象?,尝试使用 dir() 和class,但它输出。我想使用元类将classmethod函数更改为装饰函数
def async_time_track(func):
# @functools.wraps(func)
async def wrapper_async(*args, **kwargs):
now = time.time()
print('async TIME ARGS', args, )
res = await func(*args, **kwargs)
end = time.time() - now
execute_time = f'{"Executed time"} {end} s'
print(execute_time)
return res
return wrapper_async
class MyMeta(type):
def __new__(mcs, name, bases, attrs, **kwargs):
for key, val in attrs.items():
if inspect.ismethoddescriptor(val):
setattr(val, '__wrapped__', async_time_track(getattr(val,'__wrapped__')))
new_cls = super().__new__(mcs, name, bases, attrs, **kwargs)
return new_cls
class MyClass4(metaclass=MyMeta):
@classmethod
async def statis(cls):
await asyncio.sleep(1)
Traceback (most recent call last):
File "C:\Users\taima\PycharmProjects\AsyncVkAccount\tests\my_test\metaclasses2.py", line 159, in <module>
class MyClass4(metaclass=MyMeta):
File "C:\Users\taima\PycharmProjects\AsyncVkAccount\tests\my_test\metaclasses2.py", line 105, in __new__
setattr(val, '__wrapped__', async_time_track(getattr(val, '__wrapped__')))
AttributeError: readonly attribute
解决方案
推荐阅读
- javascript - 仅从 http 响应中获取一段
- django - 表单中的 clean() 方法不起作用(将其加载到 ListView 中)
- javascript - 如何在DYgraph中绘制独立的第二个Y轴
- graphql - Prisma,对非关系表执行 mysql JOIN 操作
- ruby - 如何在 rdoc.info 网站上托管我的 ruby rdoc 文档?
- java - 使用 Spring Boot JPA,有没有办法获取存储过程返回的数据集(没有物理表)?
- c++ - 运行时错误:引用绑定到“int”类型的空指针(stl_vector.h):LeetoCode 907
- matrix - 如何在相同条件下执行多个操作?
- python - 搜索日期范围 mongodb:递归异常
- java - 尝试使用 ResponseEntity 和 RestTemplate 生成方法