微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python:迭代地实例化具有相似输入的所有子类

如何解决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 举报,一经查实,本站将立刻删除。