我正在写这样的代码
import random
class A:
def __init__(self):
self.att = self.set_att()
def set_att(self):
x = random.randint(0,10)
if x == 1:
return "att1"
elif x == 2:
return "att2"
# ... and so on
我的问题是:我应该这样做吗?或者有更好的pythonic方式来做到这一点。 我只想在init中调用set_att。 谢谢
pycharm说我应该使用@staticmethod,但我不明白是差异
答案 0 :(得分:0)
以下是我能想到的一些尝试:
import random
POSSIBLE_ATT_VALUES = [f'att{x}' for x in range(1, 11)]
class A(object):
def __init__(self):
# One-time random value:
self.att = random.choice(POSSIBLE_ATT_VALUES)
class B(object):
@property
def att(self):
# Every access will return random value:
return random.choice(POSSIBLE_ATT_VALUES)
>>> a = A()
>>> a.att
"att3" # Possible value
>>> a.att
"att3" # Will be same value
>>> b = B()
>>> b.att
"att5" # Possible value
>>> b.att
"att1" # Possibly different value