【发布时间】:2018-04-16 01:05:45
【问题描述】:
我有一个班级作业。我的任务之一如下:
一个。通过添加一个新属性 hunger 来扩充 Tribute 类,该属性将描述
对贡品的渴望程度。 hunger 的初始值应为 0,因为所有
Tributes 将满肚子地开始游戏。
b.创建一个方法,get_hunger(),返回贡品的当前饥饿度。
c。创建一个方法,add_hunger(hunger),它将为 Tribute 的值添加饥饿值
饥饿。当贡品的饥饿值等于或大于 100 时,他/她会
go_to_heaven()。 (仅供参考go_to_heaven() 之前由其他父类定义)
1) 我编写了以下代码,当我尝试运行它时,我不断在
self.get_hunger()+=hunger之前的缩进处突出显示语法错误。我可以知道语法错误的原因吗,因为.get_hunger()本质上是self.hunger。self.get_hunger()=0将适用于此任务之后的其他代码,但我不明白为什么self.get_hunger()+=hunger不起作用。我的讲师强调不要破坏底层抽象层,这就是为什么我会使用方法.get_hunger()而不是属性hunger,特别是如果我需要从 Tribute 的未来子类的实例中获取饥饿值,不确定这是否概念也在实际情况中被接受。
class Tribute(Person):
def __init__(self, name, health):
super().__init__(name, health, -1)
self.hunger=0
def get_hunger(self):
return self.hunger
def add_hunger(self,hunger):
self.get_hunger()+=hunger #dk why can't assign to function call
if self.get_hunger()>=100:
self.go_to_heaven()
2)我还尝试编写
self.hunger+=hunger而不是self.get_hunger()+=hunger以克服语法错误并且它可以工作。但是,我不直观地发现为什么在定义类方法时以及当我面临以下情况时方法参数名和类属性名相同,参数不会覆盖hunger形式的属性。谁能跟我讲道理?
【问题讨论】:
标签: python python-3.x class