这些是与我的问题相关的代码:(编辑完整的代码,我为任何引起的混乱道歉)
class House:
def __init__(self, location, price, housetype, sqft):
self.location = str(location)
self.price = float(price)
self.housetype = str(housetype)
self.sqft = int(sqft)
if self.price < 0 or self.sqft < 100:
print("Input a valid value.")
def getLocation(self):
return self.location
def getPrice(self):
return self.price
def getHousetype(self):
return self.housetype
def getSqft(self):
return self.sqft
def setLocation(self, newLocation):
self.location = newLocation
def setPrice(self, newPrice):
if newPrice > 0:
self.price = newPrice
else:
print("Input a valid value.")
def setHousetype(self, newHousetype):
self.housetype = newHousetype
def setSqft(self, newSqft):
if newSqft > 100:
self.sqft = newSqft
else:
print("Input a valid value.")
def tax(self, no_years):
if self.getHousetype == 'Apartment':
return self.price * (0.025 * no_years)
elif self.getHousetype == 'Bungalow':
return self.price * (0.035 * no_years)
elif self.getHousetype == 'Condominium':
return self.price * (0.045 * no_years)
else:
print("Invalid data.")
def __eq__ (self, other):
if self.getHousetype() == other.getHousetype():
return 'true'
else:
return 'false'
def __lt__ (self, no_years, other):
if self.tax(no_years) < other.tax(no_years):
return 'true'
我根据我的格式创建了两个房屋变量,但是当我运行house1.__lt__(5, house2)
时,它给了我错误:
'&LT;' “NoneType”和“NoneType”的实例之间不支持。
我已经尝试了各种方法来解决这个问题大约一个小时,但我真的很新的python,不知道如何阻止我的代码获取这些'NoneType'值,我也不能更改它们为我的方法__lt__
的代码的整数。有人能告诉我如何解决这个问题吗?
答案 0 :(得分:1)
self.getHousetype
本身就是一个方法对象,因此self.getHousetype == 'Apartment'
始终为false。您需要调用该方法,即self.getHousetype() == 'Apartment'
。由于此时您的所有条件都是假的,因此您的返回语句都不会发生,并且函数会以返回默认值None
结束。
但正如cricket_007指出的那样,python不需要getter方法,所以只做self.housetype == 'Apartment'
self.housetype