Я относительно новичок в Python. Я реализовал структуру данных tr ie и сейчас тестирую ее. Однако по какой-то причине мой объект становится None
каждый раз, когда я использую оператор '+'.
class Trie:
class Node:
def __init__(self):
self.count = 0
self.children = [None] * 26
def __init__(self):
self.root = self.Node()
def __add__(self, string):
curr = self.root
for i in range(len(string)):
index = ord(string[i]) - ord('a')
if curr.children[index] is None:
curr.children[index] = self.Node()
curr = curr.children[index]
curr.count = curr.count + 1
def __contains__(self, string):
curr = self.root
for i in range(len(string)):
index = ord(string[i]) - ord('a')
if curr.children[index] is None:
return False
curr = curr.children[index]
return curr.count > 0
Мой тестовый класс выглядит следующим образом:
import random
import string
from src.main.python.datastructures.trees.trie.trie import Trie
def generate_random_string():
return ''.join([random.choice(string.ascii_lowercase) for _ in range(32)])
def test_trie():
for i in range(100):
random_string_list = []
t = Trie()
for j in range(100):
random_string = generate_random_string()
random_string_list.append(random_string)
t += random_string # After this line, t becomes None
for random_string in random_string_list:
assert random_string in t
next_random_string = generate_random_string()
if random_string_list not in next_random_string:
assert next_random_string not in t
Как указано в комментарии к коду, когда я отлаживал код, t
становится None
, поэтому я получаю ошибку типа, которая выглядит примерно как TypeError: unsupported operand type(s) for None and str
.