更改子 class 的条件 class 实例

Change conditional class instance of child class

我有一个名为 Organism 的父 class,它有一个名为 isIntelligent 的 class 属性,我根据该值创建了一个名为 fitness 的变量class 属性 isIntelligent 同样:

class Organism:

    isIntelligent = False
    
    def __init__(self):
        #some variables defined here


    if isIntelligent:

        @property
        def fitness(self):
            return 0

现在,我想创建两个子 classes,例如 RabbitFox,我希望兔子聪明而狐狸不聪明。根据他们应该有 fitness 属性.

我同样尝试更改子 class 中 isIntelligent 变量的值:

class Rabbit(Organism):

    isIntelligent = True

class Fox(Organism):

    isIntelligent = False

然而,当我 运行 代码时,我希望 Rabbit 对象具有 fitness 变量,但它们没有。

解决这个问题的正确方法是什么?

不在方法中的代码在定义 class 时执行,因此它不能依赖于实例。您需要将条件放在 属性 方法中。

@property
def fitness(self):
    if self.isIntelligent:
        return 0
    else:
        return 1