我用python编写了一个简单的面向对象的代码。在名为A
的第一堂课中,我使用了__str__
,以便可以打印对象。在另一个类中,我将这些对象放在obj_list
中。我的问题是,为什么我可以使用类A
打印我的对象,但是当我想打印为print(my_object.obj_list)
时却没有得到对象的字符串表示形式?
class A:
def __init__(self, name):
self.name = name
def __str__(self):
info = "My name is: " + self.name
return info
obj_1 = A("Mike")
obj_2 = A("Jon")
obj_3 = A("Steve")
print(obj_1, obj_2, obj_3)
class B:
def __init__(self):
self.obj_list = [obj_1, obj_2, obj_3]
my_object = B()
print(my_object.obj_list)
答案 0 :(得分:1)
您正在覆盖__str()__
方法,该方法在尝试将您的类转换为字符串(例如, print()
。创建对象列表时,它将对象的引用放入列表中,仅此而已。如果您希望它们在任何情况下都转换为字符串,请更改:
def __str__(self):
收件人:
def __repr__(self):