python重写__str__遇到的错误TypeError: __str__ returned non-string (type tuple)

__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打印的话会报错,所以只有这样调用才不会报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值