让 __str__ 或 __repr__ 返回列表作为字符串

2 投票
2 回答
2094 浏览
提问于 2025-04-18 01:34

我在使用Python 3.3.4。以下是我的代码:

class ojaxi(object):
    nomeri = 0
    def __init__(self):
        self.wevri = []

    def damateba(self, adamiani):
        if adamiani in self.wevri:
            print("We Already Have That one")
        else:
            self.wevri.append(adamiani)

    def __repr__(self):
        return self.wevri



class adamiani(ojaxi):
    def __init__(self, saxeli, shuasax, asaki):
        self.saxeli = saxeli
        self.shuasax = shuasax
        self.asaki = asaki

    def __str__(self):
        return self




baramidze = ojaxi()
N1 = adamiani("tyler", "durden", 18)
N2 = adamiani("joe", "black", 20)
baramidze.damateba(N1)
baramidze.damateba(N2)


print(baramidze)

我遇到的问题是,我无法让一个函数打印出“baramidze”中的所有成员。我希望__repr____str__能打印出类似这样的内容:["N1", "N2"]

但我得到的只是一个错误提示:

__str__ returned non-string (type list)

2 个回答

0

你应该这样做:

def __str__(self):
    return ' '.join(self.saxeli+self.shuasax+str(self.asaki))
2

就像错误信息所说的,你必须从 __str__ 这个函数返回一个字符串。如果你想实现你想要的效果,可以这样做:

def __str__(self):
    return repr(self.wevri)

撰写回答