如何同步实现Python中定义的异步抽象类方法
实现方案
你必须保持派生类的report方法和抽象基类的异步签名一致,否则会触发抽象方法实现校验失败,无法实例化派生类。即使方法内部没有需要await的异步逻辑,仅需保留async声明即可,这是满足要求的最简写法:
class SyncConversionReporter(ConversionResultsReporter): async def report( self, conversion_spec: ConversionSpec, results: Sequence[PositiveFloat] ) -> None: print("Hello World")
说明
- 保留
async声明仅为了匹配父类签名,方法内部没有任何异步操作,无需使用await - 调用该方法时仍按异步方法规范使用
await调用即可,运行逻辑完全符合同步执行的预期 - 如果尝试去掉
async声明,会直接触发Can't instantiate abstract class SyncConversionReporter with abstract method report的报错,无法正常使用
内容的提问来源于stack exchange,提问作者Eldar S
相关产品推荐
相关产品推荐

