如果条件为"add_length",则在帧形成时,isistance有第二个参数"length",但在"add_inches"的情况下,第二个值为int(整数(。我不能理解这部分。为什么它们不能都是int(integer(呢。感谢您的帮助!
class Length:
def __init__(self, feet, inches):
self.feet = feet
self.inches = inches
def __str__(self):
return f'{self.feet} {self.inches}'
def __add__(self, other):
if isinstance(other, Length):
return self.add_length(other)
if isinstance(other, int):
return self.add_inches(other)
else:
return NotImplemented
def __radd__(self, other):
return self.__add__(other)
def add_length(self, L):
f = self.feet + L.feet
i = self.inches + L.inches
if i >= 12:
i = i - 12
f += 1
return Length(f, i)
def add_inches(self, inches):
f = self.feet + inches // 12
i = self.inches + inches % 12
if i >= 12:
i = i - 12
f += 1
return Length(f, i)
length1 = Length(2, 10)
length2 = Length(3, 5)
print(length1 + length2)
print(length1 + 2`
print(length1 + 20)
print(20 + length1)
当两个长度对象添加在一起时,第一个条件是检查场景:
length1 = Length(2, 10)
length2 = Length(3, 5)
print(length1 + length2)
第二个条件是当一个整数被加到一个长度上时,检查场景。
print(length1 + 2)
print(length1 + 20)
由于需要如何访问数据,条件调用两个不同的方法add_length
和add_inches
。也就是说,对于add_length
,它通过对象(L(的属性进行访问。对于add_inches
,它是从整数(英寸(访问的。
根据我的理解,这只是这个类的设计方式。
您可以将长度类中的两个对象添加在一起(这是第一个isinstance
(,也可以将一个以英寸为单位的整数添加到长度中(这是第二个isinstance
(。