python - 在 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 个名字,但是当保存的名字很多或者我不知道确切的数字时,我该怎么做才能一次看到它们?
解决方案
没有什么可以自动收集类的所有实例。您应该将它们放在一个列表中,而不是单独的变量中。
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')
推荐阅读
- visual-studio-code - 如何使用 sublime 键盘快捷键等一个键绑定向选择或整行添加评论?
- c# - 列表
加入数据表 - python - 如果因变量既有正值又有负值,如何处理任何机器学习算法?
- aws-amplify - 我可以使用 AWS Amplify 创建在将新图像上传到 S3 时触发 lambda 函数的 SQS
- javascript - 使用 javascript 时无法调整设计
- c# - SQL/VisualStudio 的“插入语句”中的多线程
- node.js - 在单个查询中计算 mongoose 中的文档
- apache-kafka - Kafka excatly-once 生产者消费者
- javascript - 如何在不破坏堆栈的情况下等待异步任务数组?
- jpa - 使用 ORM/JPA 的单表策略时如何使用从 JPQL 中的父实体继承的属性(列)