请教大神,Python @property setter可以设置多个属性值吗?
例如
class A():
...
@property
def a(self,x,y): ...
@a.setter
def a(self,x,y): self.x=x; self.y=y
Python @property setter可以设置多个属性值吗
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- oyljerry 2016-12-28 05:42关注
你可以传tuple,list等
class A(object): def __init__(self, val): self.idx = val @property def idx(self): return self._idx @idx.setter def idx(self, val): try: value1, value2 = val except ValueError: raise ValueError("Pass an iterable with two items") else: """ This will run only if no exception was raised """ self._idx = sha512(value1+value2)
Demo
>>> a = A(['foo', 'bar']) #pass a list >>> b = A(('spam', 'eggs')) #pass a tuple >>> a.idx <sha512 HASH object @ 0xa57e688> >>> a.idx = ('python', 'org') #works >>> b.idx = ('python',) #fails Traceback (most recent call last): ... raise ValueError("Pass an iterable with two items") ValueError: Pass an iterable with two items
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报