Как переместить функцию из класса в другой класс, не передавая вызывающий объект

У меня есть следующая реализация для структуры данных (Trie), и она работает, как ожидалось. У меня основной класс Node и класс оболочки Trie, Я хочу переместить функцию _insert() от Node класс для Trie класс, чтобы сохранить Node настолько просто, насколько это возможно. Но я сталкиваюсь со многими проблемами, такими как class Trie has no object nodes and no object word. Есть ли способ сделать это, не передавая вызывающий объект из основного в? Ожидания:

trie.insert("Hi")

Все реализации insert() в классе Три

class Node:
    def __init__(self):
        self.word = None
        self.nodes = {}

    def _insert(self, word, string_pos=0):
        current_lettter = word[string_pos]
        if current_lettter not in self.nodes:
            self.nodes[current_lettter] = Node()
        if(string_pos + 1 == len(word)):
            self.nodes[current_lettter].word = word
        else:
            self.nodes[current_lettter]._insert(word, string_pos + 1)

        return True


class Trie:

    def __init__(self):
        self.root = Node()

    def insert(self, word):
        self.root._insert(word)

trie = Trie()
trie.insert("Hi") 

1 ответ

Класс Trie (как реализовано) не имеет ни узлов объекта, ни слова объекта.

Класс Trie имеет только объекты root.nodes и root.word.

Другие вопросы по тегам