Недавно я столкнулся с чем -то странным, работая с наследством в Python. У меня был метод базового класса, который был синхронным, но в подклассе я случайно переодетал его как асинхронный метод (не осознавая базового кода, ожидая, что он будет синхронизирован). < /P>
, что удивительно, код не сломался сразу - он молча не удался или не действовал позже, когда этот метод использовался в контексте, который не дал что -либо.class Base:
def process(self):
print("Base processing...")
class Child(Base):
async def process(self):
print("Child async processing...")
obj = Child()
obj.process()
< /code>
output: < /p>
RuntimeWarning: coroutine 'Child.process' was never awaited obj.process()
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
< /code>
Я ожидал, что это вынесет некоторую очевидную ошибку, но это не так. Вместо этого он просто вернул объект Coroutine, и если я явно не ожидал его, он не будет работать. Есть ли чистый или рекомендуемый способ поймать такую ошибку во время выполнения или во время разработки?
Подробнее здесь: https://stackoverflow.com/questions/797 ... le-bugs-in
Почему переопределение метода с различным асинхровым поведением вызывает тонкие ошибки в наследовании Python? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
React-native с различным поведением в рабочем режиме и режиме разработки.
Гость » » в форуме Android - 0 Ответы
- 28 Просмотры
-
Последнее сообщение Гость
-