提问人:opnightfall1771 提问时间:12/30/2022 更新时间:12/30/2022 访问量:299
在 python 中使用抽象基类实现工厂模式 - 抽象类不可调用
Implementing factory pattern with abstract base class in python - Abstract class is not callable
问:
我正在尝试实现一种工厂模式,通过该模式,我可以根据输入检索实例化各种类似的类。如果我有这样的代码:
from abc import ABC, abstractmethod
class AbstractTranscoder(ABC):
@abstractmethod
def transcode():
raise NotImplementedError
class Transcoder1(AbstractTranscoder):
def transcode():
...
class TranscoderFactory:
TRANSCODERS = {'transcoder1': Transcoder1}
def get_transcoder(name: str) -> AbstractTranscoder:
return TRANSCODERS[name]
我的目标是能够使用工厂模式来检索类,如下所示:
transcoder_class = TranscoderFactory().get_transcoder('transcoder1')
transcoder_object = transcoder_class()
我认为这会起作用,但问题是因为我使用的是类型注释,IDE对我大喊大叫。有没有一种更好的方法来实现这一点,使IDE认为我不是在尝试实例化一个抽象类,而是在实例化它的具体子类之一?'AbstractTranscoder object is not callable'
谢谢。
答: 暂无答案
评论
-> typing.Type[AbstractTranscoder]