我了解到__str__
可以定义对象字符串的输出。你知道吗
示例:
class Person(object):
def __init__(self, name):
self.name = name
def __str__(self):
return self.name
p1 = Person('Steve Jobs')
p2 = Person('Bill Gates')
p3 = Person('Mark Zuckerberg')
print(p1) # >>> Steve Jobs
它按我的意愿输出Steve Jobs
,而不是<__main__.Person object at 0x10410c588>
但是,如果我创建一个列表:
lst = [p1, p2, p3]
print(lst)
# >>> [<__main__.Person object at 0x1045433c8>, <__main__.Person object at 0x1045434e0>, <__main__.Person object at 0x104543550>]
我必须:
print([i.__str__() for i in lst])
# >>> ['Steve Jobs', 'Bill Gates', 'Mark Zuckerberg']
为了让它工作??你知道吗
这没什么意义,对吧?你知道吗
list.__str__
使用对象的__repr__
来构建字符串。所以,只需将__repr__
委托给__str__
:编辑
如果你想遵守惯例,可以做如下事情:
考虑实施:
它给出:
您看到不匹配行为的原因是
print
对其参数调用str()
,但是list
str
和repr
是相同的,并且都对每个元素调用repr
。你知道吗相关问题 更多 >
编程相关推荐