[英]How do I iterate through a list of objects
我正在尝试打印对象(记录)的列表(电话簿),但我是 python 的新手,它无法识别记录是列表中的对象。 在这种情况下我将如何调用对象?
我试过查看 python for 循环的教程,但没有参考如何调用列表中的对象。
class record:
def __init__(self,telephone,lastname,firstname):
self.telephone = telephone
self.lastname = lastname
self.firstname = firstname
class PhoneBook:
def __init__(self):
self.phonebook = []
def printphonebook(self):
for record in self.phonebook:
x = 0
print(self.phonebook[x])
x = x + 1
预期输出将是对象列表,包括电话号码、姓氏和名字。
你想打印一个类的实例。 所以你应该提供特殊的__str__
方法来告诉 python 对象应该如何打印。 __str__()
必须返回一个字符串: 这里是文档。
class record:
def __init__(self,telephone,lastname,firstname):
self.telephone = telephone
self.lastname = lastname
self.firstname = firstname
def __str__(self):
#returning a string with the content, you can edit the string to fit your needs.
#here I am using formatted string literals, works with python >= 3.6
return f"Last name: {self.lastname}, First Name: {self.firstname}, Telephone: {self.telephone}"
class PhoneBook:
def __init__(self):
self.phonebook = []
def printphonebook(self):
for entry in self.phonebook:
print(entry)
这里发生的事情是,当您调用print(record)
, __str__()
str __str__()
方法用于提供表示实例内容的字符串。
所以如果你这样做:
book = PhoneBook()
book.phonebook.append(record(800, "Wayne", "Bruce"))
book.phonebook.append(record(1234, "Kent", "Clark"))
book.phonebook.append(record(499, "Prince", "Diana"))
book.printphonebook()
这将打印:
姓:Wayne,名字:Bruce,电话:800
姓:肯特,名字:克拉克,电话:1234
姓:Prince,名字:Diana,电话:499
self.phonebook
没有任何元素。 当然,它什么也不打印。x=0
所以您总是会打印第一项:class record:
def __init__(self,telephone,lastname,firstname):
self.telephone = telephone
self.lastname = lastname
self.firstname = firstname
class PhoneBook:
def __init__(self):
self.phonebook = [1,2,3,4,5]
def printphonebook(self):
for record in self.phonebook:
x = 0
print(self.phonebook[x])
x = x + 1
a = PhoneBook()
a.printphonebook()
1
1
1
1
1
x
索引真的毫无意义,你可以只打印record
:class record:
def __init__(self,telephone,lastname,firstname):
self.telephone = telephone
self.lastname = lastname
self.firstname = firstname
class PhoneBook:
def __init__(self):
self.phonebook = [1,2,3,4,5]
def printphonebook(self):
for record in self.phonebook:
print(record)
a = PhoneBook()
a.printphonebook()
1
2
3
4
5
所以: 1. 用任何元素填充你的self.phonebook
2. 打印record
,没有索引。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.