传递了一个对象而不是对象的 属性?
Passed an object instead of object's property?
有两个 类 - 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 returns 而不是 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>]
为什么它传递的不是名称,而是对象本身?找不到这里缺少的内容。
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}")
有两个 类 - 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 returns 而不是 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>]
为什么它传递的不是名称,而是对象本身?找不到这里缺少的内容。
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}")