当前位置: 首页 > 面试题库 >

具有多个值的属性设置器

刘棋
2023-03-14
问题内容

我有一个属性设置器,它通过获取两个字符串并对其进行哈希处理来生成唯一的ID:

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

我有两个问题:

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

问题答案:

如何将两个值传递给设置器?

您可以将iterable(元组,列表)传递给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


 类似资料:
  • 问题内容: 如何设置数据属性而不在jQuery中添加值?我要这个: 我试过了: 其他所有内容似乎都将第二个参数添加为字符串。是否可以只设置没有值的属性? 问题答案: 该功能也是设置器功能。您可以将一个空字符串传递给它。 空字符串将仅创建没有值的属性。

  • 问题 在你解析一个Document之后可能想修改其中的某些属性值,然后再保存到磁盘或都输出到前台页面。 方法 可以使用属性设置方法Element.attr(String key, String value), 和Elements.attr(String key, String value). 假如你需要修改一个元素的class 属性,可以使用Element.addClass(String clas

  • 问题内容: 是否可以过滤对象数组,从而使属性的值可以是几个值(或条件)中的任一个 而无需编写自定义过滤器 这类似于此问题-Angular.js ng-repeat:按单个字段过滤 但是代替 是否可以做这样的事情 对于以下示例数据- 我尝试失败 问题答案: 最好的方法是使用一个函数: 另外,您可以使用ngHide或ngShow根据特定条件动态显示和隐藏元素。

  • 在阅读AWS DynamoDB留档时,我看到它不建议创建多个表。但是当我们将json格式化的数据放在DynamoDB表中时,应该是创建具有许多级别(例如10)的嵌套json内容的属性还是具有较少级别的多个属性?我想这是逐案处理的。但我想知道的是设计DynamoDB表时的一般规则。阅读AWS文档后,我仍然感到困惑,所以我在这里发布问题。谢谢!

  • 我试图一次为一个元素设置多个属性。我找到了这个答案,以及对那个答案的这个评论。在那里的JSFiddle中,他不使用字符串作为属性名,与使用字符串的答案相反。 我在第7行添加了以下内容: 但是我得到了以下错误: 未捕获的引用Error:未定义html 评论JSFiddle(已编辑)

  • 问题内容: 我似乎找不到具有多个属性的CSS过渡 速记 的正确语法。这没有做任何事情: 我用javascript添加了show类。元素变得更高且可见,它只是不过渡。在最新的Chrome,FF和Safari中进行测试。 我究竟做错了什么? 编辑:为了清楚起见,我正在寻找简化我的CSS的简写版本。使用所有供应商前缀已经足够enough肿。还扩展了示例代码。 问题答案: 句法: 请注意,如果指定了延迟,