首页 > 解决方案 > 使用另一个类 Python 从一个类打印对象

问题描述

我用python写了一个简单的面向对象的代码。在名为A我使用的第一类__str__中,我可以打印我的对象。在另一个类中,我将这些对象放入obj_list. 我的问题是,为什么我可以用 class 打印我的对象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)

标签: pythonoop

解决方案


您正在重写__str()__方法,当某些东西试图将您的类转换为字符串 ig 时调用该方法print()。当您创建对象列表时,它会将对象的引用放在列表中,仅此而已。如果您希望它们在任何情况下都转换为字符串,请更改:

def __str__(self):

到:

def __repr__(self):

推荐阅读