0

Python 这样做:

t = (1, 2)
x, y = t
# x = 1
# y = 2

我怎样才能实现我的课程呢?

class myClass():
    def __init__(self, a, b):
        self.a = a
        self.b = b

mc = myClass(1, 2)
x, y = mc
# x = 1
# y = 2

有没有我可以实现的魔术功能来实现这一点?

4

2 回答 2

3

你需要让你的类可迭代。通过向其中添加__iter__方法来做到这一点。

class myClass():
    def __init__(self, a, b):
        self.a = a
        self.b = b

    def __iter__(self):
        return iter([self.a, self.b])

mc = myClass(1, 2)

x, y = mc

print(x, y)

输出:

1 2
于 2020-03-11T21:02:38.043 回答
1

如果您的课程没有做太多其他事情,您可能更喜欢使用命名元组

from collections import namedtuple

MyClass = namedtuple('MyClass', 'a b')
mc = MyClass(1, 2)
print(mc.a, mc.b)  # -> 1 2
x, y = mc
print(x, y)  # -> 1 2

顺便说一句,样式注释:类名应该是 UpperCamelCase。

于 2020-03-11T22:17:42.730 回答