class FootMeasure(object):
def __init__(self, feet=0, inches=0):
"""Initiates feet and inches to 0. User can enter custom numbers"""
self.__feet = feet
self.__inches = inches
def __repr__(self):
"""Returns inches higher than 11 to a foot representation
Returns 60 inches at 5 ft instead of 5 ft 0 inches
Returns 0 as 0 ft 0 inches
"""
if self.__inches == 0:
return str(self.__feet) + ' ft '
elif self.__inches > 11:
feet = int(self.__inches / 12)
remainder = self.__inches % 12
return str(feet) + ' ft ' + str(remainder) + ' in '
else:
return str(self.__feet) + ' ft. ' + str(self.__inches) + ' in. '
def __add__(self):
"""Returns two FootMeasures added together"""
我是班级的新手,所以我对如何做到这一点感到困惑。我知道这可能是一个简单的过程,但我只是在寻找添加分数的例子而且无法弄清楚。那么,我该如何为此创建一个add方法呢?例如,如果我说第一个= FootMeasure(1,1),第二个= FootMeasure(1,1)。然后结果=第一个+第二个。我当然想要2英尺2英寸的结果。我怎么能这样做?
答案 0 :(得分:1)
__add__
方法应该有两个参数:一个用于对象本身,另一个用于另一个。然后将适当的值一起添加到return
结果中。
但是,我建议您重构代码以将FootMeasure
对象存储为单个英寸数。然后,您可以更轻松地进行计算。这类似于处理货币计算的方式,其值由最小面额的单个整数表示(例如$ 3.50将表示为350美分)。
此外,对象的__repr__
应该允许您以eval()
可以处理的方式重现对象。您可以使用内置的divmod()
生成商和余数,然后将其解压缩为格式字符串。
最后,这个类可以很好地处理格式很好的字符串的其他方法(__str__
,你在__repr__
中的内容),对象的脚,对象的英寸(英寸以下) 12考虑到英尺,而不是总英寸,因为它已经是inches
),依此类推。
class FootMeasure(object):
def __init__(self, feet=0, inches=0):
"""Initiates feet and inches to 0. User can enter custom numbers"""
self.inches = feet*12 + inches
def __repr__(self):
"""Returns the string representation of the object, in feet and inches
"""
return 'FootMeasure({}, {})'.format(*divmod(self.inches, 12))
def __add__(self, other):
"""Returns two FootMeasures added together"""
return FootMeasure(inches=self.inches + other.inches)
答案 1 :(得分:0)
您需要两个参数:
def __add__(self, other):
答案 2 :(得分:0)
您需要两个参数self
和other
。然后,对于每个新属性,您只需将self
和other
的属性添加到一起。使用这些新值创建并返回一个新的FootMeasure
对象,然后你就完成了设置!
def __add__(self, other):
"""Returns two FootMeasures added together"""
return FootMeasure(self.__feet + other.__feet,
self.__inches + other.__inches)