我有一个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类的实例。我为什么不能做那件事?
似乎从未定义node.data.age。您是否尝试过执行node.age?
class Node(Student):
def __init__(self, value):
self.left = None
self.right = None
self.data = value
当您传递值时,您正在将数据设置为值,但是没有多余的内容被保存。
我不确定您在寻找什么。但是您在尝试这些吗?
x = Student('fname', 'lname', 'tech', 27)
y = Node(x)
z = Tree()
n = Student('fname1', 'lname1', 'tech1', 20)
z.addNode(y, n)
这些没有错误
您也可以检查__new__
以获得更好的代码