【发布时间】:2018-01-21 20:43:30
【问题描述】:
我了解到__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']
让它工作??
这没什么意义吧?
【问题讨论】:
-
如果有帮助请看这里 - stackoverflow.com/questions/12448175/…
-
@AbhinavRisal 它有帮助。谢谢!
-
str(i)是一种更好的拼写方式i.__str__() -
@埃里克谢谢!我有点强调
__str__,但谢谢!