Python实例变量包含另一个类的实例,但是为什么我不能访问该变量的实例变量

问题描述 投票:0回答:2

我有一个Student类,Node类和Tree类。基本上,我想将Student类的实例传递给Node类的实例变量。我试图访问包含Student类实例的Node实例变量的实例变量。为什么会出现错误?抱歉,我通常使用Java编写代码,试图理解Python。

这是我的代码:

class Student:
    def __init__(self, fname, lname, major, age):
        self.fname = fname
        self.lname = lname
        self.major = major
        self.age = age

    def __repr__(self):
        return "%s %s" % (self.fname, self.lname)

    def __str__(self):
        return "Student name: %s %s. Major's in %s and is %s years old" % (self.fname, self.lname, self.major, self.age)

class Node(Student):
    def __init__(self, value):
        self.left = None
        self.right = None
        self.data = value

class Tree:
    def __init__(self):
        self.root = None

    def addNode(self, node, value):
        if(node == None):
            self.root = Node(value)
        else:
            if(value.age<node.data.age):
                if(node.left == None):
                    node.left = Node(value)
                else:
                    self.addNode(node.left, value)

            else: 
                if(node.right == None):
                    node.right = Node(value)
                else:
                    self.addNode(node.right, value)

    def printInorder(self, node):
        if(node != None):
            self.printInorder(node.left)
            print(node)
            self.printInorder(node.right)

我在尝试执行node.data.age的Tree类中遇到错误

Node类的实例变量“数据”应包含Student类的实例。我为什么不能做那件事?

python object binary-search-tree nodes instance-variables
2个回答
0
投票

似乎从未定义node.data.age。您是否尝试过执行node.age?

class Node(Student):
    def __init__(self, value):
        self.left = None
        self.right = None
        self.data = value

当您传递值时,您正在将数据设置为值,但是没有多余的内容被保存。


0
投票

我不确定您在寻找什么。但是您在尝试这些吗?

x = Student('fname', 'lname', 'tech', 27)
y = Node(x)
z = Tree()
n = Student('fname1', 'lname1', 'tech1', 20)
z.addNode(y, n)

这些没有错误

您也可以检查__new__以获得更好的代码

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.