python - 传递了一个对象而不是对象的属性?
问题描述
有两个类 -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>]
为什么它传递的不是名称,而是对象本身?无法找出这里缺少什么。
解决方案
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}")
推荐阅读
- c - 使用 HeapDestroy 时是否需要 CloseHandle?
- idl-programming-language - 在 for 循环中跳过缺失值
- python - python中的rpy2动态时间扭曲(dtw) - 窗口不起作用
- css - 从父div中选择2级以下的子元素
- jquery-validate - Google reCaptcha + 自定义表单验证:我可以同步运行 .execute() 吗?
- c# - PHP中的64个二进制字符串到16个字符的十六进制
- javascript - 有没有办法使用从我计算机上的不同文件夹调用的 CSS 来编辑 svg?
- android - 谁以及何时应该处置意图?
- json - Angular 6 - 文本区域中的值显示为对象对象
- ios - 选择器没有快速输出行数据 3