Как я могу получить значение атрибута, когда он дважды «класс» - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь получить доступ к значениям self.left и self.right после процесса clust.append. Когда я писал для объекта в clust: print (object. dict ), он дает все значения, кроме self.left и self.right, где он предоставляет объект 'left': clusters.bicluster в 0x03C8DBB0 и 'right' : clusters.bicluster объект в 0x03C68250.

def hcluster(rows,distance=pearson):
distances={}
currentclustlid=-1

clust=[bicluster(rows[i],id=i) for i in range(len(rows))]

while len(clust)>1:


    lowestpair=(0,1)
    closest=distance(clust[0].vec,clust[1].vec)

    for i in range(len(clust)):
        for j in range(i+1,len(clust)):
            if(clust[i].id,clust[j].id) not in distances:
                distances[(clust[i].id,clust[j].id)]=distance(clust[i].vec,clust[j].vec)

            d=distances[(clust[i].id,clust[j].id)]



            if d<closest:
                closest=d
                lowestpair=(i,j)

    mergevec=[(clust[lowestpair[0]].vec[i]+clust[lowestpair[1]].vec[i])/2 for i in range(len(clust[0].vec))]

    newcluster=bicluster(mergevec,left=clust[lowestpair[0]], right=clust[lowestpair[1]],distance=closest,id=currentclustlid)


    currentclustlid=-1
    del clust[lowestpair[1]]
    del clust[lowestpair[0]]
    clust.append(newcluster)
    for dd in clust: print(dd.__dict__)
...