如何使用我的班级__str __?

时间:2017-03-26 01:09:39

标签: python python-2.7

有没有办法让Python print使用我的班级__str__,当它们被其他类包含时?

class C(object):
    def __str__(self):
        return 'MyC'

print C() # OK

print [C()] # prints [<__main__.C object at 0x7fb8774e59d0>]

2 个答案:

答案 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()] )