首页 > 解决方案 > 我怎样才能打印出来,以便每个实例的属性都在一行上?

问题描述

我最近在我的教堂里接到了一个电话,我正在尝试编写一个小程序来帮助我跟踪一些任务。我已经编写了一些类代码,它会打印出来,但我希望这些细节中的每一个都打印在自己的行上或带有开销描述。我不确定如何格式化。这是代码。

class Ministers:
    def __init__(self, last, first, middle, phone, email, district, 
    districtPresident, partner, interviewed, dateOfInterview):
        self.last = last
        self.first = first
        self.middle = middle
        self.phone = phone
        self.email = email
        self.district = district
        self.districtPresident = districtPresident
        self.partner = partner
        self.interviewed = interviewed
        self.dateOfInterview = dateOfInterview

    def info(self):
        return '{} {} {} {} {} {} {} {} {} {}'.format(self.last, self.first, 
        self.middle, self.phone, self.email, self.district, 
        self.districtPresident, self.partner, self.interviewed, 
        self.dateOfInterview)

minister_1 = Ministers('Arthur', 'Leslie', 'Brainard', 'unknown', 'unknown', 
'Central', 'Sean D. Burnham', 'Ben Pearson', 'n/a','n/a')

print(Ministers.info(minister_1))

当我这样做的时候,我不妨问一下:把这么多属性放到一个类实例中是一种传统的做事方式吗?我应该用不同的方式写这个吗?显然我是新手。

代码打印如下:

姓氏 名字 中间名等

我希望它像这样打印:

姓氏
名字
中间名

标签: pythonpython-3.x

解决方案


实现输出的一种更短的方法(仅适用于 Python 3.7+,因为 dicts 保证在此处插入排序):

def info(self):
    return '\n'.join(self.__dict__.values())

就个人而言,我会摆脱 info 功能,因为这个__str__dunder 方法专门为此目的而存在。因此,当您将功能替换为:

def __str__(self):
    return '\n'.join(self.__dict__.values())

您可以简单地查看您的Ministerwith实例print(minister_1)


推荐阅读