gpt4 book ai didi

python - 具有多个值的属性 setter

转载 作者:太空狗 更新时间:2023-10-29 21:16:07 25 4
gpt4 key购买 nike

我有一个属性 setter ,它通过获取两个字符串并对其进行散列来生成一个唯一的 ID:

@id.setter
def id(self,value1,value2):
self._id = sha512(value1+value2)

我有两个问题:

  1. 是否允许(考虑良好的 Python 编码实践)以这种方式编码
  2. 如何将两个值传递给 setter ?

最佳答案

How do I pass two values to the setter?

你可以传递一个 iterable(tuple, list) 给 setter,例如:

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)

演示:

>>> 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

关于python - 具有多个值的属性 setter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18714262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com