У меня есть следующий фрагмент кода:
import asyncio
class Test:
def __init__(self):
print(asyncio.iscoroutinefunction(self.func2))
# The following block of code does not identify func2 as an async function
for i in dir(self):
if not i.startswith('__'): # To eliminate inclusion of dunder functions
print(i, asyncio.iscoroutinefunction(i))
def func1(self):
pass
async def func2(self):
pass
Test()
Когда я пытаюсь проверить, является ли функция асинхронной c, используя имя класса, связанное с именем функции, она работает как положено и возвращает False
для func1 True
для func2, что ожидается.
Но когда я пытаюсь сделать то же самое без использования имени класса, связанного с функцией (см. код в блоке for) с помощью dir () для себя и l oop через каждую функцию одну за другой и проверьте, являются ли они асинхронными c или нет, он не работает должным образом и возвращает False
для func1
, что ожидается, но также для func2
не ожидаемый и неправильный.
Результаты:
True
func1 False
func2 False
Tl; dr: Как я могу l oop просмотреть все функции, доступные в классе, и проверить, являются ли они асинхронными c или нет