我有5个类,如下所示。执行从类 5 开始。在这里,依赖注入被用作侦听器对象传递给类的构造函数,然后该对象调用 listen() 方法。这部分很好。Bot
麻烦从现在开始。
从方法中,我调用另一个调用的方法,该方法位于类( 文件中)中。然后,该方法从 2 个不同的类和 中调用另外两个方法。listen()process()Processorprocessor.pyprocess()TokenizerCore
如您所见,所有这些都是耦合的,此处不使用依赖关系注入。我不知道该怎么做。
我已经尝试了python包和包的示例,但据我所知,这些示例与单级依赖关系有关,而不是这样的情况。dependency-injectorpinject
我曾想过在一个模块中创建所有必需的对象,并在需要时将其作为参数传递给所有类。但这似乎不是一个好习惯。
我能做些什么来解耦上面的代码?我应该如何进行模块化?
# core.py
class Core:
def decide(self, data):
""" Makes decisions based on input data """
# blah blah
-
# tokenizer.py
import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
stoplist = set(stopwords.words('english'))
class Tokenizer:
def tokenize(self, query):
""" Tokenize the input query string """
tokenized_query = word_tokenize(query)
clean_query = [w for w in tokenized_query if not w in stoplist]
return clean_query
-
# processor.py
import tokenizer
import core
class Processor:
def process(self, query):
"""
Send the input query to tokenizer
tokenized input is send to the Core module for decision making
"""
tokenized_input = tokenizer.Tokenizer().tokenize(query)
core.Core().decide(tokenized_input)
-
# listener.py
import processor
class Listener:
def listen(self):
""" Continuosly listens to user input """
while True:
query=input()
processor.Processor().process(query)
-
# bot.py
import listener
class Bot:
def __init__(self, listener):
listener.listen()
Bot(listener.Listener())
ABOUTYOU
杨__羊羊
相关分类