如何解决python:迭代地实例化具有相似输入的所有子类
我正在尝试实例化我的代码中的抽象类的所有子类,因为标记函数采用相同的输入。这是代码:
import spacy
nlp = spacy.load("en_core_web_sm")
from abc import ABC,abstractmethod
class SpacyTagger(ABC):
@abstractmethod
def tagger(self,texts):
pass
class SpacyTokenizer(SpacyTagger):
def tagger(Self,texts):
for doc in nlp.pipe([texts]):
return ([n.text for n in doc])
class SpacyLemmatizer(SpacyTagger):
def tagger(self,texts):
for doc in nlp.pipe([texts]):
return ([n.lemma_ for n in doc])
当然,我可以像这样分别实例化所有子类:
token= SpacyTokenizer().tagger('she is a girl')
lemma= SpacyLemmatizer().tagger('she is a girl')
但相反,我希望将其全部放在一行中,或者放在将文本作为输入的函数中。我还尝试了下面的函数来获取所有子类的名称,但不知道如何从这里开始,所以我可以使用相同的输入将它们实例化一次。
def all_subclasses(cls):
return set(cls.__subclasses__()).union(
[s for c in cls.__subclasses__() for s in all_subclasses(c)])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。