代码之家  ›  专栏  ›  技术社区  ›  dvim

在Python中打印对象列表时如何应用uuu str_uuuu函数

  •  26
  • dvim  · 技术社区  · 14 年前

    >>> class Test:
    ...     def __str__(self):
    ...         return 'asd'
    ...
    >>> t = Test()
    >>> print(t)
    asd
    >>> l = [Test(), Test(), Test()]
    >>> print(l)
    [__main__.Test instance at 0x00CBC1E8, __main__.Test instance at 0x00CBC260,
     __main__.Test instance at 0x00CBC238]
    

    基本上我想要三个 asd 打印列表时打印的字符串。我也试过了 pprint 但结果是一样的。

    3 回复  |  直到 7 年前
        1
  •  48
  •   Tavian Barnes    8 年前

    尝试:

    class Test:
       def __repr__(self):
           return 'asd'
    

    看看这个 documentation link

        2
  •  9
  •   Alex Martelli    14 年前

    __repr__ 绝对是一种可能。如果出于任何原因(现有类型,

    print [str(x) for x in l]
    

    或者,正如一些人所说, map(str, l)

        3
  •  3
  •   Community Jaime Torres    4 年前

    你需要做个决定 __repr__ 方法:

    >>> class Test:
        def __str__(self):
            return 'asd'
        def __repr__(self):
            return 'zxcv'
    
        
    >>> [Test(), Test()]
    [zxcv, zxcv]
    >>> print _
    [zxcv, zxcv]
    

    docs :

    object.__repr__(self)

    repr() <...some useful description...> __repr__() 但不是 __str__() ,那么 __报告() 当需要该类实例的非正式字符串表示形式时,也使用。

    这通常用于调试,因此表示信息丰富且明确是很重要的。