我的代码有点复杂。我希望pirate属性取值为True,如果其他两个属性在总结并高于某个因子时高于某个数字。
例如,如果social * 0.6 + fixed大于5,我希望pirate属性为True,否则为false。
import random
class consumer(object):
"""Initialize consumers"""
def __init__(self, fixed, social,pirate):
self.social = social
self.fixed = fixed
self.pirate = pirate
"""Create an array of people"""
for x in range(1,people):
consumerlist.append(consumer(random.uniform(0,10),random.uniform(0,10),True))
pass
答案 0 :(得分:2)
回应摩西的回答:使用计算属性比仅在初始化时计算盗版值更安全。使用@property属性装饰方法时,它充当属性(您不必像方法那样使用括号),这在事后更改社交成员时始终是最新的。
class Consumer(object):
def __init__(self, fixed, social):
self.fixed = fixed
self.social = social
@property
def pirate(self):
return self.social * 0.6 + self.fixed > 5
consumer1 = Consumer(1, 12)
print("Value of pirate attribute: " + str(consumer1.pirate))
答案 1 :(得分:0)
您需要存储fixed
和social
的随机值,然后将其用于生成pirate
的比较:
for x in range(1,people):
fixed = random.uniform(0,10)
social = random.uniform(0,10)
pirate = (social * 0.6 + fixed) > 5 # boolean
consumerlist.append(consumer(fixed, social, pirate))
你的for的传递是多余的