导入类后__str __()不起作用

时间:2016-08-23 19:56:44

标签: python string oop import

我在导入类时遇到问题:导入类后 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>

你能帮我理解出了什么问题吗?

1 个答案:

答案 0 :(得分:0)

假设您将两个.py个文件放在同一个目录中,Python 2.7代码可以使用标准CPython解释程序(例如Canopy)正常运行。诸如Anaconda之类的Python 3.5解释器会抱怨print没有被用作函数,因此不会执行。

由于您的print表现为对象的默认print实现,因此您需要重新编译(.pyc文件)所涉及的.py文件。这可以通过在某个IDE中重新启动内核来轻松完成。

Canopy IDE允许您在Py​​thon解释器仍处于活动状态时再次运行.py文件。但是,在重新运行之前创建的所有对象保持不变,并且不会神奇地获取被覆盖的__str__成员方法。