使用先前初始化的属性初始化的类实例

时间:2016-10-14 10:26:39

标签: python

我的代码有点复杂。我希望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

2 个答案:

答案 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)

您需要存储fixedsocial的随机值,然后将其用于生成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的传递是多余的