2017-02-18 32 views
0

说我有一个元素类print()函数是如何工作的?

class Element(object): 
    def __init__(self,key,val): 
     self.key = key 
     self.val = val 

    def __str__(self): 
     return '(' + str(self.key) + ',' + str(self.val) + ')' 

现在,当我尝试打印包含Element类

arr = [Element(10,20),Element(20,30)] 
print(arr) 

的对象的数组,输出为 -

[<maxheap.Element object at 0x01C1FCB0>, <maxheap.Element object at 0x01C270B0>] 

哪功能正在打印<maxheap.Element object at 0x01C1FCB0>?为什么不在print(Element(10,20))中调用__str__(self)方法?

+1

[Python中的\ _ \ _ str \ _ \ _和\ _ \ _ repr \ _ \ _之间的区别]的可能重复(http://stackoverflow.com/questions/1436703/difference-between-str-and- python) – mkrieger1

回答

-1

尝试使用

def __repr__(self): 

代替

def __str__(self): 
0

尝试使用索引,而不是一次打印列表,像这样:
print(arr[0])
print(arr[1])


代替:
print(arr)

编辑:
使用在这种情况下__repr__作品。

+0

但是为什么?使用__repr(self)__解决了print()调用repr()的问题。我不明白__str(self)__的用法。 – Kakaji

+0

@Kakaji比请阅读文档。这里非常清楚/详细,并且在这个网络上有一个真正的FAQ – frlan