如何打印出来,使每个实例的属性都在一行上?

时间:2019-02-19 22:00:26

标签: python python-3.x

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

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))

虽然我很在意,但我也可能会问:将这么多属性放在类实例中是一种常规的处理方式吗?我应该这样写吗?显然我是新手。

代码显示如下:

姓氏名中间名等

我希望它像这样打印:

姓氏

中间名

4 个答案:

答案 0 :(得分:1)

一种实现输出的较短方法(仅适用于Python 3.7+,因为保证将按此处的顺序插入字典)

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

就个人而言,我将摆脱info函数,因为__str__ dunder方法专门为此目的而存在。因此,当您将函数替换为:

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

您可以简单地用Minister查看print(minister_1)的实例。

答案 1 :(得分:0)

只需将格式字符串切换为以换行符代替空格即可,即将'{} {} {} {} {} {} {} {} {} {}'替换为'{}\n{}\n{}\n{}\n{}\n{}\n{}\n{}\n{}\n{}'

答案 2 :(得分:0)

您可以使用如下格式选项:

$
f'{variable1}\n{variable2}.....'
$

并且您不需要在格式末尾

您还可以统一字典中的属性,以便可以同时调用所有属性。

答案 3 :(得分:0)

也许不是解决问题的最优雅方法,但是对您的退货进行以下更改即可解决问题。 “ \ n”是换行符。

返回'{} \ n {} \ n {} \ n {} \ n {} \ n {} \ n {} \ n {} \ n {} \ n {}'。format(self.last ,self.first,