class Jiaju: def __init__(self, jiaju): self.jiaju = jiaju def jiaju1(self): print(self.jiaju) return self.jiaju class Fangzi(Jiaju): def __init__(self, fuxing, zongmianji): self.fuxing = fuxing self.zongmianji = zongmianji def jisuan(self): print(self.fuxing,self.zongmianji) print(self.jiaju) def __str__(self): return f'户型:{self.fuxing}\t总面积:{self.zongmianji}\t剩余面积:{(self.zongmianji) - (sum((self.jiaju).values()))}\t家具名称列表:{self.jiaju}' jiaju = {'床': 4, '衣柜': 2, '餐桌': 1.5} 家具 = Jiaju(jiaju) 家具.jiaju1() 房子 = Fangzi('三室一厅', 120) print(房子.jisuan()) #报错 AttributeError: 'Fangzi' object has no attribute 'jiaju'. Did you mean: 'jiaju1'? {'床': 4, '衣柜': 2, '餐桌': 1.5} 三室一厅 120
时间: 2024-04-22 12:24:47 浏览: 87
你好!根据你的代码,错误出现在`Fangzi`类的`jisuan`方法中。在这个方法中,你尝试访问`self.jiaju`属性,但是`Fangzi`类并没有定义这个属性。这就是为什么报错提示说`'Fangzi' object has no attribute 'jiaju'`。
解决这个问题的一种方法是在`Fangzi`类的构造函数中调用父类`Jiaju`的构造函数,并将`jiaju`参数传递进去。这样,在`Fangzi`类中就可以访问到`self.jiaju`属性了。修改后的代码如下:
```python
class Fangzi(Jiaju):
def __init__(self, fuxing, zongmianji, jiaju):
super().__init__(jiaju)
self.fuxing = fuxing
self.zongmianji = zongmianji
def jisuan(self):
print(self.fuxing, self.zongmianji)
print(self.jiaju)
def __str__(self):
return f'户型:{self.fuxing}\t总面积:{self.zongmianji}\t剩余面积:{(self.zongmianji) - (sum((self.jiaju).values()))}\t家具名称列表:{self.jiaju}'
jiaju = {'床': 4, '衣柜': 2, '餐桌': 1.5}
家具 = Jiaju(jiaju)
家具.jiaju1()
房子 = Fangzi('三室一厅', 120, jiaju)
print(房子.jisuan())
```
这样修改后,应该能够正确输出家具信息以及房子的户型和总面积。如果还有其他问题,请随时提出。
阅读全文