gpt4 book ai didi

python - 使用自定义类打印字典作为值不会调用它们的字符串方法?

转载 作者:太空狗 更新时间:2023-10-30 02:57:58 25 4
gpt4 key购买 nike

我在 python 中搞乱类并写了 2 个小类:

class ClaElement:

start = None
end = None
basesLeft = None
orientation = None
contig = None
size = None

def __init__(self, contig, start, end, orientation, basesLeft=None):

self.contig = contig
self.start = start
self.end = end
self.orientation = orientation
self.basesLeft = basesLeft

self.size = self.end - self.start

def __str__(self):
return "{ClaElement: "+str(self.contig)+"_"+str(self.start)+"_"+str(self.end)+"_"+str(self.orientation)+"}"

def getSize(self):
return self.size

class ClaCluster:

contig = None
clusterElements = []

def __init__(self, contig, firstElement):
self.contig = contig
self.addElement(firstElement)

def addElement(self, claElement):
self.clusterElements.append(claElement)

def getFirst(self):
return self.clusterElements[0]

def getLast(self):
return self.clusterElements[-1]

def getElements(self):
return self.clusterElements

def getContig(self):
return self.contig

def __str__(self):
return "{ClaCluster: "+str(self.contig)+" "+str(len(self.clusterElements))+" elements}"

还有我的测试主程序:

from ClaElement import ClaElement
from ClaCluster import ClaCluster

if __name__ == '__main__':

ele = ClaElement("x",1,2,"left")

claDict = dict()

cluster = ClaCluster("x", ele)

claDict["hello"] = cluster

print(claDict)
print(claDict["hello"])
print(ele)

这导致以下输出:

{'hello': <ClaCluster.ClaCluster object at 0x7fe8ee04c5f8>}
{ClaCluster: x 1 elements}
{ClaElement: x_1_2_left}

现在我的问题是为什么我第一次打印的输出是内存地址,即使我为我的类 ClaCluster 提供了一个有效的字符串方法?有什么方法可以让我在打印字典时调用该方法,还是必须手动迭代?

最佳答案

内置dict类型的__str__()方法使用的是你类的__repr__()方法,而不是 __str__()。只需重命名您的方法,一切都应该可以正常工作。

关于python - 使用自定义类打印字典作为值不会调用它们的字符串方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35459473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com