C++17 引入了新的结构化绑定语法:
std::pair<int, int> p = {1, 2};
auto [a, b] = p;
Run Code Online (Sandbox Code Playgroud)
python3中有类似的东西吗?我正在考虑使用“splat”运算符将类变量绑定到一个列表,该列表可以解压并分配给多个变量,如下所示:
class pair:
def __init__(self, first, second):
self.first = first
self.second = second
...
p = pair(1, 2)
a, b = *p
Run Code Online (Sandbox Code Playgroud)
这可能吗?如果是这样,我将如何实现它来为我自己的班级工作?
Python 中的元组可以作为此问题的简单解决方案。但是,内置类型在实现其他类方法时没有提供太大的灵活性。
是的,您可以使用__iter__方法,因为迭代器也可以解包:
class pair:
def __init__(self, first, second):
self.first = first
self.second = second
def __iter__(self):
# Use tuple's iterator since it is the closest to our use case.
return iter((self.first, self.second))
p = pair(1, 2)
a, b = p
print(a, b) # Prints 1 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1040 次 |
| 最近记录: |