我正在通过一个在线课程学习python,一直做得很好,我偶然发现并发布了。通常,当遇到问题时,我只是在谷歌上查找答案或查找指南,但这里的问题是,我甚至不确定我在寻找什么!
我现在有下面的代码。我有一个任务是让每个锻炼强度都有一个特定值,比如Low = 3,Medium =6和High = 12。然后我可以找到通过持续时间燃烧的卡路里*这些值取决于传递到班级中的强度和持续时间。
我不知道的是如何给类方法赋值?我尝试过lists和Dictionarys,它们都抛出了错误。我尝试编写和If语句来尝试if self.intensity(getattr) = "Low":Then x= 3等。
我真的不知道从哪里开始寻找答案,所以我问你们。
目前的代码是(我意识到缺少一些片段,我目前只专注于为强度赋值
class ExerciseSession:
def __init__(self, exercise, intensity, duration):
self.exercise = exercise
self.intensity = intensity
self.duration = duration
def get_exercise(self):
return self.exercise
def get_intensity(self):
return self.intensity
def get_duration(self):
return self.duration + " minutes"
def set_exercise(self, excersice):
self.set_exercise = exercise
def set_intensity(self, intensity):
self.set_intensity = intensity
def set_duration(self, duration):
self.set_duration = duration
new_exercise = ExerciseSession("Running", "Low", 60)
print(new_exercise.get_exercise())
print(new_exercise.get_exercise())
print(new_exercise.get_intensity())
print(new_exercise.get_duration())
new_exercise.set_exercise("Swimming")
new_exercise.set_intensity("High")
new_exercise.set_duration(30)
print(new_exercise.get_exercise())
print(new_exercise.get_intensity())
print(new_exercise.get_duration())
print(new_exercise.get_intensity())
print(new_exercise.get_duration())
new_exercise.set_exercise("Swimming")
new_exercise.set_intensity("High")
new_exercise.set_duration(30)
print(new_exercise.get_exercise())
print(new_exercise.get_intensity())
print(new_exercise.get_duration())我只是在一个类中做错了列表/字典,还是我在这里遗漏了一些非常简单的东西。我理解类和方法,但似乎在类内部的工作方式略有不同,等等。
发布于 2020-04-19 22:12:21
首先--你的setter是按照你的问题实现的吗?如果是这样,您似乎正在尝试用值覆盖您的方法。在set_exercise()中也有一个小的拼写错误。将以下内容与您的问题进行比较:
def set_exercise(self, exercise):
self.exercise = exercise
def set_intensity(self, intensity):
self.intensity = intensity
def set_duration(self, duration):
self.duration = duration 然后,您可以在类之外编写测试语句,以确定在根据强度计算卡路里消耗量时使用什么值。
或者,Python提供了一种整洁的方式来封装数据,而无需通过@property装饰器求助于getter/setter方法。然后,可以以简单的方式设置和检索该属性。这在更复杂的情况下特别有用,其中属性派生自其他属性,这意味着您将始终访问最新的属性。这里详细介绍了这一点:"public" or "private" attribute in Python ? What is the best way?
class ExerciseSession:
def __init___(self, exercise, intensity, duration):
self._exercise = exercise
self._intensity = intensity
self._duration = duration
@property
def exercise(self):
return self._exercise
@property
def intensity(self):
if self._intensity == "Low":
out = 3
elif self._intensity == "Medium":
out = 6
elif self._intensity == "High":
out = 12
else:
out = None
return out
@property
def duration(self):
return self._duration注意:每个实例属性前的"_“用于指示内部属性通常是私有的。
然后可以按如下方式访问这些属性(请注意,我们不必调用任何方法,例如new_exercise.exercise()):
new_exercise = ExerciseSession("Running", "Low", 60)
print(new_exercise.exercise)
print(new_exercise.intensity)
print("{} minutes.".format(new_exercise.duration))@exercise.setter
def exercise(self, value):
self._exercise = value这些属性可以更新为:
new_exercise.exercise = "Swimming"发布于 2021-08-12 21:44:15
做同样的事情:-)
def calories_burned(self):
if self.intensity == "Low":
return 4 * self.duration
elif self.intensity == "Medium":
return 8 * self.duration
else:
return 12 * self.durationhttps://stackoverflow.com/questions/61305105
复制相似问题