有没有办法让Python print
使用我的班级__str__
,当它们被其他类包含时?
class C(object):
def __str__(self):
return 'MyC'
print C() # OK
print [C()] # prints [<__main__.C object at 0x7fb8774e59d0>]
答案 0 :(得分:3)
您还必须定义__repr__
,因为您没有直接调用它__str__
方法,并且打印列表会调用值{&#39}。 __repr__
方法不是__str__
。
class C(object):
def __str__(self):
return 'MyC'
def __repr__(self):
return self.__str__() # return the same result as the __str__ method
print C() # prints MyC
print [C()] # also prints MyC
答案 1 :(得分:1)
Python会在容器中打印 repr 表示,如您所见。您可以定义__repr__
而不是__str__
。但是,如果可能的话,那个用于生成可以被评估以再次返回对象的字符串。因此,要处理这两种情况,您可以这样做。
class C(object):
def __repr__(self):
return 'C()'
print( C() )
print( [C()] )