更改子 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,例如 Rabbit
和 Fox
,我希望兔子聪明而狐狸不聪明。根据他们应该有 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
我有一个名为 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,例如 Rabbit
和 Fox
,我希望兔子聪明而狐狸不聪明。根据他们应该有 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