Python 类,通过打印或格式调用时的值与分配给值时的值不同

Mar*_*Omo -1 python tuples python-2.7

我有一个代表我用来替换元组的点的类。使用元组,我可以调用x, y = point如何使用类来模拟此功能?我可以__repr__返回一个元组,但TypeError: __repr__ returned non-string (type tuple)如果我尝试调用 print,它会抛出。元组如何处理此功能?

Blc*_*ght 5

如果您希望您的类的实例像 多赋值语句右侧的元组一样可用x, y = some_object,您需要使您的类可迭代。这种行为与__repr__你的班级无关。

尝试这样的事情(使用您需要的任何其他方法):

class Point(object):
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __iter__(self):
        yield self.x
        yield self.y

    def __repr__(self):
        return "{}({}, {})".format(type(self).__name__, self.x, self.y)
Run Code Online (Sandbox Code Playgroud)

此类的实例是可迭代的,这意味着解包将起作用。它们也可以打印或变成用绳子strrepr