【发布时间】:2016-08-24 14:30:17
【问题描述】:
导入类时遇到问题:str()在导入类后不起作用
class unit:
value = None
node = None
def __init__(self,value,node):
self.value = value
self.node = node
def __str__(self):
if self.node == None:
return str(self.value) + " -> " + "Null"
else:
return str(self.value) + " -> " + str(self.node.value)
在类文件中,str() 按预期工作:
print unit(5,None)
5 -> Null
但是当我导入类并测试打印功能时,它返回对象地址而不是预先指定的文本:
from unit import unit
new = unit(5,None)
print new
<unit.unit instance at 0x000000000A8420C8>
你能帮我理解发生了什么问题吗?
【问题讨论】:
-
请修正代码的缩进。它不能像这里显示的那样运行。
-
将您的“打印新”更改为“打印(新)”。它适用于python3
-
@chenchuk 还建议始终将 print 视为一个函数,以便我的代码可以被视为 Python 2 和 Python 3。但如果代码不应该是 Python 3,那么它不是“必要”。
-
对我来说工作得很好。这是你的python文件最近的变化吗?如果是,您是否重新编译了您的
unit文件? -
你确定你真的在打印它,而不仅仅是在解释器提示符下输入名称(使用
__repr__,而不是__str__)?