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

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

trie.insert("Hi")

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

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 Ответ

0 голосов
/ 20 декабря 2018

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

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

...