我在导入类时遇到问题:导入类后 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
但是当我导入类并测试print函数时,它返回对象地址而不是预先指定的文本:
from unit import unit
new = unit(5,None)
print new
<unit.unit instance at 0x000000000A8420C8>
你能帮我理解出了什么问题吗?
答案 0 :(得分:0)
假设您将两个.py
个文件放在同一个目录中,Python 2.7
代码可以使用标准CPython
解释程序(例如Canopy
)正常运行。诸如Anaconda之类的Python 3.5
解释器会抱怨print
没有被用作函数,因此不会执行。
由于您的print
表现为对象的默认print
实现,因此您需要重新编译(.pyc
文件)所涉及的.py
文件。这可以通过在某个IDE中重新启动内核来轻松完成。
Canopy IDE允许您在Python解释器仍处于活动状态时再次运行.py
文件。但是,在重新运行之前创建的所有对象保持不变,并且不会神奇地获取被覆盖的__str__
成员方法。