Передал объект вместо свойства объекта? - PullRequest
0 голосов
/ 07 ноября 2018

Существует два класса - 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 Ответ

0 голосов
/ 07 ноября 2018

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}")
...