如何覆盖嵌套 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'
我编写了一个父 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'