我创建了这样一个Enum
对象:
class Gender(Enum):
FEMALE = 'female'
MALE = 'male'
RANDOM = random.choice([FEMALE, MALE])
我希望每一次获取的随机值都是真正的随机,但它似乎无法实现:
>>> class Gender(Enum):
... MALE = 'male'
... FEMALE = 'female'
... RANDOM = choice([MALE, FEMALE])
...
>>> Gender.RANDOM
<Gender.MALE: 'male'>
>>> Gender.RANDOM
<Gender.MALE: 'male'>
>>> Gender.RANDOM
<Gender.MALE: 'male'>
>>> Gender.RANDOM
<Gender.MALE: 'male'>
我也尝试使用lambda,但它看起来不太好,尽管它可以工作:
Gender.RANDOM()
除了使用lambda表达式外,还有其他方法可以每次获取随机值吗?
我们将此枚举对象用作某个方法参数的默认值,因此它应该是一个属性而不是函数,因为当我们使用Gender.FEMALE
时,它不是一个函数,而是一个属性,Gender.RANDOM
也应该是一个属性:
def full_name(gender=Gender.FEMALE):
...
def full_name(gender=Gender.RANDOM):
...
def full_name(gender=Gender.RANDOM):
不是一个解决方法。 - Ethan Furmanclassproperty
来实现,但我希望有一个更简单、更Pythonic的解决方案。 - Lo L