[英]How can I unpack two values from user defined class?
class Vector:
def __init__(x,y):
self.x=x
self.y=y
如何获得两个变量x,y=Vector(20,10)
?
答案应该是 x=20,y=10。
如果您只想访问x
和y
属性,可以使用点符号访问它们:
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
vector = Vector(10, 20)
x = vector.x
y = vector.y
print('x =', x)
print('y =', y)
# Output
x = 10
y = 20
如果你想给你的 class 一个类似于元组解包的行为,你可以覆盖__iter__
:
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
def __iter__(self):
yield self.x
yield self.y
def __str__(self):
return 'x={}, y={}'.format(self.x, self.y)
vector = Vector(x=10, y=20)
print(vector)
x, y = vector
print('x =', x)
print('y =', y)
# Output
x=10, y=20
x = 10
y = 20
您的__init__
方法当前定义不正确; 签名应该是def __init__(self, x, y)
,需要注意的重要一点是第一个参数是self
。
如果不定义某种方法将x
和y
值作为元组返回,您将无法将它们提取为x, y = Vector(10, 20)
,您需要单独访问实例属性,即:
vector = Vector(10, 20)
x = vector.x
y = vector.y
或者,您可以在 class 上定义一个额外的方法来返回一个元组并解压缩:
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
def coords(self):
return self.x, self.y
vector = Vector(10, 20)
x, y = vector.coords()
print(x, y)
Output:
10 20
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.