使用collections.namedtuple,您可以创建一个Point = namedtuple('Point', 'x y')并设置p = Point(2,3),并使用x, y = p解压缩p。
对类也能做类似的事情吗?e.g
class Point:
def __init__(self,x ,y):
self.x = x
self.y = y
p = Point(2,3)
x,y = p
print(f"x: {x}, y: {y}")
>>> x: 2, y: 3这当然会导致错误,但是如何才能获得名称的效果呢?
发布于 2017-09-10 21:09:18
class Point:
def __init__(self, x, y):
self._flag = 2
self.x = x
self.y = y
def __iter__(self):
return self
def __next__(self):
if self._flag == 2:
self._flag = 1
return self.x
elif self._flag == 1:
self._flag = 0
return self.y
else:
raise StopIteration()
p = Point(5, 6)
(x, y) = p发布于 2021-02-11 04:33:11
要获得命名元组的效果,请使类成为元组的子类。看看我类似的question和答案
https://stackoverflow.com/questions/46145555
复制相似问题