Python类,在通过print或format调用时与指定给value时具有不同的值

Python类,在通过print或format调用时与指定给value时具有不同的值,python,python-2.7,tuples,Python,Python 2.7,Tuples,我有一个类,它表示我用来替换元组的一个点。对于元组,我可以调用x,y=point,我如何用类来模拟这个功能?我可以让uuu repr_uuu返回一个元组,但如果我尝试调用print,它会抛出TypeError:uuu repr_uu返回非字符串类型的元组。如何处理元组的此功能?不要使用自己的类,而是使用collections.namedtuple? helpcollections.namedtuple甚至是一个关于点类型的示例解包本质上是迭代。下面是如何在Point类中实现此功能的示意图: 编辑

我有一个类,它表示我用来替换元组的一个点。对于元组,我可以调用x,y=point,我如何用类来模拟这个功能?我可以让uuu repr_uuu返回一个元组,但如果我尝试调用print,它会抛出TypeError:uuu repr_uu返回非字符串类型的元组。如何处理元组的此功能?

不要使用自己的类,而是使用collections.namedtuple?
helpcollections.namedtuple甚至是一个关于点类型的示例

解包本质上是迭代。下面是如何在Point类中实现此功能的示意图:


编辑,当然,在这里我只是包装一个元组,但是你可以解包实现的任何东西。

如果你想让你的类的实例像多赋值语句右侧的元组一样可用,比如x,y=some\u对象,你需要让你的类是可编辑的。这种行为与你的班级无关

使用您需要的任何其他方法尝试以下操作:

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)

这个类的实例是iterable的,这意味着解包可以工作。它们也可以打印出来,或者用str或repr转换成字符串。

请阅读并遵循此处的建议:这似乎很混乱。x、 y=某个_对象正在解包,需要iterable类型。它与打印无关。您可以让点类从元组或列表继承。
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)