Заголовок немного длинный, но для кого-то, хорошо осведомленного о питоне, он должен быть довольно простым.
Я новичок в python. Итак, возможно, я делаю что-то не так.
Предположим, что у меня есть класс TreeNode
class TreeNode(Node):
def __init__(self, name, id):
Node.__init__(self, name, id)
self.children = []
и подкласс с весом:
class WeightedNode(TreeNode):
def __init__(self,name, id):
TreeNode.__init__(self, name, id)
self.weight = 0
До сих пор, я думаю, что я в порядке. Теперь я хочу добавить объектную переменную, называемую отцом в TreeNode, так что WeightedNode также имеет этот член. Проблема в том, что я не знаю, когда инициализирует объект, который будет отцом. Я установил отца после этого метода в TreeNode:
def set_father(self, father_node):
self.father = father_node
Проблема в том, когда я пытаюсь получить доступ к self.father в Weighted:
print 'Name %s Father %s '%(self.name, self.father.name)
Получаю:
AttributeError: WeightedNode instance has no attribute 'father'
Я думал, что могу сделать father
видимым, сделав что-то в TreeNode.__init__
, но я не смог найти что.
Как я могу это сделать?
Спасибо.
Вы можете просто инициализировать его значением по умолчанию:
self.father = None
Таким образом, атрибут, по крайней мере, будет распознан. И это справедливо, так как на данный момент действительно нет father
.
В ответ на ваше выражение о Джастине ответьте:
print ' Name %s Father %s '%(str(self.name), str(self.father.name))
Команда str() получит строковое представление объекта, даже если оно None