У меня есть два класса с одним наследованием, которые представляют собой простую реализацию дерева:
class tree:
def __init__(self, nodes = set()):
self.nodes = nodes
def addnode(self, node):
self.nodes.add(node)
class Node(tree):
def __init__(self, name = '1', data = None, children = set()):
self.data = data
self.children = children
self.name = name
super().addnode(self)
tree()
Node('1')
Однако запуск этого кода возвращает ошибку:
self.nodes.add(node)
^^^^^^^^^^
AttributeError: 'Node' object has no attribute 'nodes'
Я не смог найти ресурсы, которые ответили бы на этот конкретный вопрос. может кто-нибудь мне помочь?
🤔 А знаете ли вы, что...
Python активно используется в научных и инженерных вычислениях.
class tree:
def __init__(self, nodes=None):
if nodes is None:
nodes = set()
self.nodes = nodes
def addnode(self, node):
self.nodes.add(node)
class Node(tree):
def __init__(self, name='1', data=None, children=None):
super().__init__()
if children is None:
children = set()
self.data = data
self.children = children
self.name = name
super().addnode(self)
tree()
Node('1')
Вам необходимо инициализировать родительский класс, чтобы иметь возможность его использовать.
для получения дополнительной информации см.: Что делает «супер» в Python? - разница между super().__init__() и явным суперклассом __init__()