首页 > 解决方案 > 在 Python 中打印一个类中包含的所有元素

问题描述

我有一个保存名字的类,每个名字都可以记录一个电话号码和一个电子邮件地址:

class address_book:

    def __init__(self,name):
        self._name=name
        self._info=dict()

    def name(self):
        return self._name

    def add_number(self,number):
        self._info['phone']=number

    def add_email(self,e_mail):
        self._info['email']=e_mail

    def __str__(self):
        return f'Name: {self._name}\nInfo:{self._info}'

首先我想问你它是否正确,因为它是我用 Python 编写的第一个类。

其次,我想问你有没有什么方法可以同时打印这个类包含的所有元素。例如:

a=address_book('James')
a.add_number(8975436)
a.add_email('James11@xxx')

b=address_book('Carl')
b.add_number(96543436)
b.add_email('carl128@xxx')

c=address_book('Ann')
[...]

如果我想全部打印出来,我必须写:

print(str(a),'\n',str(b),'\n',str(c))

没关系,因为我的通讯录中只保存了 3 个名字,但是当保存的名字很多或者我不知道确切的数字时,我该怎么做才能一次看到它们?

标签: pythonpython-3.x

解决方案


没有什么可以自动收集类的所有实例。您应该将它们放在一个列表中,而不是单独的变量中。

all_addresses = []

a=address_book('James')
a.add_number(8975436)
a.add_email('James11@xxx')
all_addresss.append(a)

b=address_book('Carl')
b.add_number(96543436)
b.add_email('carl128@xxx')
all_addresses.append(b)

...
print(*all_addresses, sep='\n')

推荐阅读