【问题标题】:how do I use __str__ method python我如何使用 __str__ 方法 python
【发布时间】:2014-11-17 04:29:27
【问题描述】:

如何使用 str 方法显示逗号分隔和方括号的列表 例如:

测试:

my_list = UnorderedList()

对于范围内的 i(5):

  my_list.add(i) 

打印(我的列表)

结果:

[4, 3, 2, 1, 0]

【问题讨论】:

  • 你的意思是要打印一个字符串"[1, 2, 3]"?或者你想要['1', '2', '3']
  • @Dannnno 我想打印一个字符串 [1, 2, 3]
  • 你能用输入和输出改写你的问题吗?
  • 您的标题和内容看起来不匹配。

标签: string python-3.x methods


【解决方案1】:

print 函数(或 Python 2.x 中的语句)已经在其参数上调用了 str,因此您无需执行任何操作

>>> print([1, 2, 3])
[1, 2, 3]
>>> print([])
[]
>>> a = [1, 2, 3]
>>> print(a)
[1, 2, 3]

正如文档所说:

所有非关键字参数都会像str()一样转换成字符串并写入流中……


如果您想获取字符串以用于打印以外的其他目的(例如,写入文件),您可以随时调用str。它只是一个和其他函数一样的函数(嗯,一个类型构造函数,但不用担心):

>>> s = str(a)
>>> s
'[1, 2, 3]'

正如文档解释的那样:

str(object) 返回object.__str__(),这是对象的“非正式”或可很好打印的字符串表示。对于字符串对象,这是字符串本身。如果对象没有__str__() 方法,则str() 回退到返回repr(object)

【讨论】:

  • @12345678:好的,很好;我写了 Python 3 的答案(Python 2 只加了一点括号),所有链接都指向 Python 3 文档。 (但你应该在你的问题中编辑python-3.x 标签,因为如果你不另外说,很多人仍然假设 Python 2.7。)
【解决方案2】:

您可以简单地使用str() 函数并将列表作为要显示的参数传递。例如,

tmp_list = [1,2,3,4]

print str(tmp_list)

【讨论】:

    【解决方案3】:

    它们用于提供字符串表示,并使用 repr 用于提供对象表示,特别是当对象在控制台或打印中表示时

    class StringRepresentation:
        def __init__(self):
            pass
    
        def __str__(self):
            return "String Representation of Object used when object used as string represenation"
    
        def __repr__(self):
            return "Object Representation"
    
    
    obj = StringRepresentation()
    print(str(obj))```
    
    UnorderedList is printing because this is the way how it __str__ or __repr__ is implemented
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-13
      • 2019-05-08
      • 2015-04-18
      • 1970-01-01
      • 2021-09-11
      • 2018-05-27
      • 1970-01-01
      • 2021-11-04
      相关资源
      最近更新 更多