【问题标题】:Print all the elements contained in a class in Python [duplicate]在Python中打印一个类中包含的所有元素[重复]
【发布时间】:2020-01-31 16:53:57
【问题描述】:

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

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 个名字,但是当保存的名字很多或我不知道确切的数字时,我该怎么做才能一次看到它们?

【问题讨论】:

  • 把它们全部放在一个列表中。
  • 这个类名字不好。这只是一种联系方式。 address_book 类应包含联系人列表。
  • @Barmar 带有 for 循环?
  • 你可以打印列表print(*list_of_addresses, sep='\n')
  • 地址簿应该是一个真正的字典,名字作为键,信息作为值。

标签: python python-3.x


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    • 2022-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-04
    相关资源
    最近更新 更多