Python 有人能解释一下这段代码的内部处理过程吗?为什么它会在0x000002DAE7122FD0处生成输出为[<;\uuuuuu main\uuuuuu.Movie对象>;]

Python 有人能解释一下这段代码的内部处理过程吗?为什么它会在0x000002DAE7122FD0处生成输出为[<;\uuuuuu main\uuuuuu.Movie对象>;],python,python-3.x,oop,Python,Python 3.x,Oop,任何人都可以解释以下输出: [<__main__.Movie object at 0x000002DAE7122FD0>] 您的列表包含一个对象您可以使用movieobj.attribute获取该对象的特定属性,但添加该对象将为您提供该对象的内存位置[]显示您有一个列表,其中有一个对电影对象的引用(以及,这是它在cPython中的内存地址,您可能正在使用) [] ||| id(obj)||| ||

任何人都可以解释以下输出:

[<__main__.Movie object at 0x000002DAE7122FD0>]

您的列表包含一个对象您可以使用movieobj.attribute获取该对象的特定属性,但添加该对象将为您提供该对象的内存位置

[]
显示您有一个列表,其中有一个对电影对象的引用(以及,这是它在cPython中的内存地址,您可能正在使用)

[]
||| id(obj)|||
||                                           ||
||一个电影对象定义在_umain_u中||
|                                             |
|这是一份清单|
您的
电影
类需要一个字符串

>类X():通过
...
>>>[X()]
[]
>>>类Y():
…定义报告(自我):
…返回“关于Y对象的字符串自定义值”
...
>>>[Y()]
[关于Y对象的字符串自定义值]
同样,您还可以在每次循环迭代中重新创建列表,这就是为什么您在列表中只找到一个条目(而不是随着每个用户输入周期而增长的集合,这可能是您想要的)。您可以将列表分配(
=[]
)移出循环体来解决此问题

为True时:
lst=[]#在每个循环中创建一个新列表
#lst是指新的空列表
lst=[]#循环之前创建的新列表
尽管如此:
#lst是指循环外部的列表

您希望看到什么?您制作了一个电影列表,
是一个电影对象的表示形式。您每次通过
电影列表=[]循环清空列表
。你应该在循环之前这样做。这是一个常见的初学者错误,我永远不会理解。我不认为这是他的问题。问题似乎是为什么列表只有一个元素,即使他输入了多部电影。这是因为列表初始化放错了地方。@Barmar你是对的,在oop,每次循环运行时,列表都变为空,这就是我打印列表时只得到1个对象的结果。谢谢。你看到我之前的评论了吗?你有一行
list\u of\u movies=[]
放错了地方。请纠正。是的,我看到了你的评论,并将列表声明放在了while循环之外。现在我可以看到一个多对象列表,每个对象在输出中都有一个唯一的id。谢谢@Barmar。这与为什么列表只有一个元素的问题有什么关系,即使他输入了多部电影?我想真的他们有两个问题,希望现在这两个问题都能得到答案!
class Movie:

 def __init__(self,title,actor,actress):
  self.title = title
  self.actor = actor
  self.actress = actress

 def info(self):
  print("Movie: ",self.title)
  print("Actor: ",self.actor)
  print("Actress: ",self.actress)

while True:
 title = input("Enter movie name")
 actor = input("Enter actor name")
 actress = input("Enter actress name")
 movieobj = Movie(title,actor,actress)
 list_of_movies = []
 list_of_movies.append(movieobj)
 option = input("Do you want to add more movies? [yes/no]")
 if option.lower() == 'no':
  break

print(list_of_movies)