如何覆盖嵌套 class 中的 __str__

How to override __str__ in nested class

我编写了一个父 class 和一个嵌套 class。我已经覆盖了父 class __str__ 方法,现在我想在嵌套 class 上做同样的事情。但是由于某种原因,嵌套 class 中的 __str__ 方法没有被调用。在嵌套的 class 的 str 中编码时,我看不到 PyDev 的自动完成列表中的实例变量。代码:

class Parent(object):

    def __init__(self):
        self.parent_var = "Parent"

    def __str__(self):
        return self.parent_var


    class Nested(object):

        def __init__(self):
            #Works (of course, why shouldn't it?)
            self.children_var = "Child"

        def __str__(self):
            # This method never called!
            return self.children_var

发生了一些奇怪的事情。为什么 __str__ 方法不能像 __init__ 那样工作?


更新:
你们是对的。代码没问题,但我的 str 试图这样做:

return "Some string" + some_integer

而且显然在 Python 中你需要在连接东西之前做 str(some_integer) (这实际上是蹩脚的)。

print Parent.Nested() # works fine, print calls __str__ resulting in 'Child'