Название немного длинное, но оно должно быть довольно простым для кого-то, хорошо осведомленного о python.В Python, как сделать элементы данных видимыми для подклассов, если они не известны при инициализации объекта?
Я новичок в 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__
, но я не смог найти что.
Как я могу это сделать?
Спасибо.
Я забыл упомянуть, что я я уже сделал это, и я получил: 'print 'Имя% s Отец% s'% (self.name, self.father.name) AttributeError: объект« NoneType »не имеет атрибута« name » ' – LB40
дерьмо, это потому что это не было инициализировано, когда я достиг этой точки программы. правильно ? – LB40
Правильно, вам нужно убедиться, что отец не является None, прежде чем вы сможете использовать имя. – unholysampler