Печать объектов из одного класса другим классом Python - PullRequest
0 голосов
/ 07 мая 2019

Я написал простой объектно-ориентированный код на 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)

1 Ответ

1 голос
/ 07 мая 2019

Вы переопределяете __str()__ метод, который вызывается, когда что-то пытается преобразовать ваш класс в строку, т.е. print(). Когда вы создаете список объектов, он помещает ссылки на объекты в список, и все. Если вы хотите, чтобы они в любом случае были преобразованы в строку, измените:

def __str__(self):

до:

def __repr__(self):
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...