Python 如何使用repr重建对象?

Python 如何使用repr重建对象?,python,representation,repr,Python,Representation,Repr,除了最后一部分,我的代码工作得很好。我想用repr函数重新创建对象,但它显然不起作用。我尝试了这里和网上的一切,但我还是很困惑。有没有办法做到这一点?如果有,语法是什么 class Modulo(object): def __init__(self, grondtal, waarde = 0): self.grondtal = grondtal self.waarde = waarde % grondtal def __call__(self,

除了最后一部分,我的代码工作得很好。我想用repr函数重新创建对象,但它显然不起作用。我尝试了这里和网上的一切,但我还是很困惑。有没有办法做到这一点?如果有,语法是什么

class Modulo(object):

    def __init__(self, grondtal, waarde = 0):
        self.grondtal = grondtal
        self.waarde = waarde % grondtal

    def __call__(self, m):
        return Modulo(self.grondtal, m)

    def __add__(self, other):
        return Modulo(self.grondtal, self.waarde + other.waarde)

    def __sub__(self, other):
        return Modulo(self.grondtal, self.waarde - other.waarde)

    def __mul__(self, other):
        return Modulo(self.grondtal, self.waarde * other.waarde)

    def __eq__(self, other):
        return self.waarde == other.waarde and self.grondtal == other.grondtal

    def __ne__(self, other):
        return not self.__eq__(other)

    def __str__(self):
        return  '[%s %% %s]' % (str(self.grondtal), str(self.waarde))

    def __repr__(self):
        return '%s' %Modulo(self.grondtal, self.waarde)

你可能想要这个:

def __repr__(self):
    return "Modulo(%d,%d)" % (self.grondtal, self.waarde)
或者,更一般一点:

def __repr__(self):
    return "%s(%d,%d)" % (self.__class__.__name__, self.grondtal, self.waarde)
例如:

>>> m = Modulo(3,2)
>>> repr(m)
'Modulo(3,2)'    

返回“%s,%s%”(self.grondtal,self.waarde)
看起来像是您想要的
return'模(%s,%s)%(self.grondtal,self.waarde)
@ChristianDean当我运行你的时,我得到:“tuple”对象没有属性“waarde”@Matthias我有我对象的字符串表示,我想用eval函数重建对象,仅此而已。@SamFarjamirad这是个坏主意。永远不要使用
eval