问题描述
我正在尝试实例化我的代码中的抽象类的所有子类,因为标记函数采用相同的输入。这是代码:
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 (将#修改为@)