Передал объект вместо свойства объекта?

Есть два класса - Company а также Project, Company объект имеет свойство projects в виде списка, который должен указывать список Project Примеры, которые добавляются в компанию. Вот реализация классов и методов для добавления проектов в компанию:

class Company(object):
def __init__(self, companyname):
    self.companyname = companyname
    self.projects = list()

def show_projects(self):
    print(f"Company projects: {self.projects}")

def add_project(self, name):
    return self.projects.append(Project(name))


class Project(object):
    def __init__(self, name):
        self.name = name

Но когда я пытаюсь инициализировать компанию, затем спроектировать и добавить ее в компанию, add_project возвращает не project.name, но сам объект, то есть вывод этого:

firm = Company("New")
first = Project("first")
print(first.name)
firm.add_project(first.name)
firm.show_projects()

будет:

first
Company projects: [<__main__.Project object at 0x00A54170>]

Почему это не имя, а сам объект? Не могу узнать, чего здесь не хватает.

1 ответ

Решение

firm.projects это список так в show_projects когда вы распечатаете его, это будет список объектов. Одним из решений будет изменение show_projects чтобы сначала отформатировать список в строку через запятую:

def show_projects(self):
    formatted_projects = ','.join([p.name for p in self.projects])
    print(f"Company projects: {formatted_projects}")
Другие вопросы по тегам