Python 具有随机属性值的属性?

Python attrs with Random Attribute Value?

我正在使用 attrs 创建具有属性 surprise 的 class A 然后应该 return 一个不同的随机值(可能从列表中选择可能值)每次访问时。

@attr.s
class A(object):
   surprise = attr.ib(type=str)

我们如何添加一个钩子来访问 class 的 surprise 属性?这个钩子可以让我们在每次访问 surprise 属性时生成一个新的字符串值。

谢谢!

期望:

a = A()
print a.surprise   # foo
print a.surprise   # bar
print a.surprise   # another_random_str

应该这样做:

from random import randint
class A:
    my_vars = ["str1", "str2", 1, 2, "whatever"]
    @property
    def surprise(self):
        return self.my_vars[randint(0, len(self.my_vars)-1)]