__str__必须使用return定义有返回值
class House():
def __init__(self, house_type, total_area, fru_list=None):
if fru_list is None:
fru_list = []
self.house_type=house_type
self.total_area=total_area
self.free_area=total_area * 0.6
self.fru_list=fru_list
def add_fru(self,x):
if self.free_area < x.area:
print("面积不足无法添加")
else:
self.fru_list.append(x.name)
self.free_area-=x.area
def __str__(self):
return (f'户型是{self.house_type},剩余面积是{self.total_area},家具列表为{self.fru_list}')
#返回值拼接过字符串的话可以直接使用print或对象调用__str__方法打印对象得到的是一个字符串,否则看下面一行例子
# return self.house_type,self.total_area,self.fru_list#返回值没有拼接字符串或没有包含在字符串内的话必须使用对象调用__str__方法而且返回的是个元组,否则会报错
class Furniture():
def __init__(self,name,area):
self.name=name
self.area=area
house=House('两室一厅',56)
bed=Furniture("席梦思",4)
chest=Furniture("衣柜",2)
table=Furniture("餐桌",1.5)
house.add_fru(bed)
print(house)#注意这里直接调用的话会触发__str__方法但是返回值必须结合字符串否则会报错
print(house.__str__())#如果__str__的返回值没有拼接字符串并且直接使用print打印的话会报错,所以只有这样调用才不会报错