【发布时间】:2023-03-10 00:25:02
【问题描述】:
我正在尝试打印由此类中的函数创建的列表 - 我需要修复什么?我正在按照[<__main__.Person instance at 0x1004a0320>, 的行从终端获取输出。
class Person:
def __init__(self,first,last,id,email):
self.firstName=first
self.lastName=last
self.id=id
self.email=email
self.friends=[]
def add_friend(self,friend):
if len(self.friends)<5:
self.friends.append(friend)
if len(friend.friends)<5:
friend.friends.append(self)
p1=Person("David","Waver","922-43-9873","dwaver@wsu.edu")
p2=Person("Bob","Jones","902-38-9973","bjones@odu.edu")
p3=Person("James","Smith","302-38-9103","jonsdfes@ou.edu")
p4=Person("Tim","Jack","902-38-0918","remmy@usc.edu")
p5=Person("Jim","Johnston","314-78-2343","jjohnston@fsu.edu")
p6=Person("Gina","Relent","102-38-1064","ginar@wvu.edu")
p7=Person("Greg","Morris","932-38-4473","jones@ttu.edu")
p1.add_friend(p2)
p1.add_friend(p3)
p1.add_friend(p4)
p1.add_friend(p5)
p1.add_friend(p6)
p1.add_friend(p7)
print p1.friends
【问题讨论】:
-
您是否要打印人员对象或其姓名(或其他详细信息)?
-
我刚刚开始学习课程;将各种
person实例的属性添加到friends列表中是这里的目标,具体如何完成并不是我真正担心的,因为它似乎很容易改变。 -
您实际上是在将人员对象添加到好友列表中。因此,当您尝试打印列表时,您会看到 shell 显示
<main.Person instance at 0x1004a0320>的列表。要打印人员对象的属性,您必须在您的人员类中定义__repr__或__str__。有关更多信息,请参阅 senderle 的答案。 -
所以我试图将整个对象添加到列表中而不是属性中?
__repr__允许我将这些人的实例的属性放入列表中,而在此之前我基本上是把整个对象都放在里面? -
是的,您正在将
Person对象添加到列表中。__repr__不会打印<main.Person instance at 0x1004a0320>,而是告诉解释器在您尝试打印对象时打印您指定的任何内容。您可以查看python repr docs 了解更多信息。
标签: python list class function