我正在通过一个在线课程学习python,一直做得很好,我偶然发现了这个问题。通常情况下,当我遇到问题时,我只是在谷歌上搜索答案或查找指南,但这里的问题是我甚至不确定我在寻找什么
我目前有以下代码。我有一项任务,使每项训练强度都有一个特定的值,例如低=3、中=6和高=12。然后我可以通过持续时间找到燃烧的卡路里,这些值取决于传入课堂的强度和持续时间
我不知道的是如何给类方法赋值?我试过列表和字典,但都有错误。我试着写If语句来尝试If self.intensity(getattr)=“Low”:然后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())
我只是在一个类中做错了列表/字典,还是缺少了一些非常简单的东西。我理解类和方法,但在一个类中似乎有些东西的工作方式略有不同,等等
首先-您的setter是否按照您的问题中的方式实现?如果是这样的话,您似乎试图用一个值覆盖您的方法。set_exercise()中还有一个小错误。将以下内容与您的问题进行比较:
然后,您可以在课外编写测试语句,以确定在根据强度计算消耗的卡路里数量时使用的值
或者,Python提供了一种简洁的方式来封装数据,而无需通过@property decorator求助于getter/setter方法。然后可以以简单的方式设置和检索该属性。这在从其他属性派生属性的更复杂的情况下特别有用,这意味着您将始终访问最新的属性。这里更详细地介绍了这一点:"public" or "private" attribute in Python ? What is the best way?
注意:在每个实例属性之前的“u”用于表示内部属性通常是私有的
然后可以按如下方式访问这些属性(注意,我们不必调用任何方法,例如new_exercise.exercise()):
如果您需要能够更新对象上的运动类型/持续时间/强度,而不仅仅是创建一个新的运动类型/持续时间/强度,则可以使用@.setter装饰器添加setter方法,例如:
这些属性可以更新为:
做同样的事情:-)
相关问题 更多 >
编程相关推荐