我是python初学者,不了解以下内容: 我定义了一个类和一个列表。当我想在添加列表后打印它时,我不会得到字符串,尽管我有一个方法可以返回字符串,对吗?我看不出这里出了什么问题我希望结果是[14,12]。。。 如果有人知道我做错了什么,请告诉我:/
class av:
def __init__(self, num):
self.num = num
def __str__(self,num):
self.num = num
return str(self.num)
lst = []
lst.append(av(14))
lst.append(av(12))
print(lst)
结果:
[<__main__.av object at 0x102503dd0>, <__main__.av object at 0x102505d90>]
首先,您的str方法有一些冗余。它应该是这样的:
str方法实际上不应该接受除“self”和
self.num = num
之外的任何参数 已在您的init方法中声明,因此它不做任何事情至于打印,当您将对象附加到列表中时,它实际上包含的是一个“指针”列表,或对存储对象数据的内存位置的引用。因此,当您试图打印出列表时,它只返回指向内存中那些位置的指针,这些位置在主文件中写为:av类的object,然后返回表示内存位置的十六进制代码。str方法仅在引用实际“指针”(对象本身)时有效。因此,如果要打印列表中的self.num值,可以使用for循环对其进行迭代:
这样可以直接打印对象。如果您想让它们在同一行,只需将其更改为:
print(obj, end = '')
__str__
仅在使用print
对象时使用,您可以使用__repr__
在控制台(more details)上获得方便的“表示”:相关问题 更多 >
编程相关推荐