【发布时间】:2017-09-24 17:50:44
【问题描述】:
我创建了一个简单的类:
class C:
def __init__(self):
self.a = 1
我想使用我创建的函数打印该类中的对象列表:
def p(s):
print('hi ', s)
我想这样调用打印函数p:p([C() for i in range(3)])
不幸的是,这会产生hi [<__main__.C object at 0x000000F92A8B9080>, <__main__.C object at 0x000000F92AB0E898>, <__main__.C object at 0x000000F92AB0E978>]。
我认为问题是由于没有实现 __str__ 所以我将我的课程改为:
class C:
def __init__(self):
self.a = 1
def __str__(self):
return str(self.a)
但我得到相同的结果:(
我希望的是hi [1, 1, 1] 或hi 1, 1, 1 或类似的东西,而不是我创建的对象的内存位置。
我可以使用
for i in range(3):
p(C())
但我想将对象列表传递给p 函数,而不是为我的每个对象调用它。这可能吗?
【问题讨论】:
-
你需要实现
__repr__,__str__forlist使用它所包含的对象的__repr__。
标签: python python-3.x