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 (将#修改为@)