我正在编码来解决这个问题
问题
使用面向对象编程和继承的概念,创建一个名为Computer的超类,它有两个名为Desktop和Laptop的子类。 在Computer类中定义名为getspecs和displayspecs的两个方法,以获取规范并显示计算机的规范。 您可以使用任何您想要的规格。 Desktop类和Laptop类应该有一个专属于它们的规范,例如笔记本电脑可以具有作为特殊规范的权重。 确保子类有自己的方法来获取和显示它们的特殊规范。 创建一个笔记本电脑/桌面对象,并确保调用计算机类中的所有方法以及自己类中的方法。
我的解决方案是
class Computer:
def __init__(self, ram, gfx, backlit):
self.ram = ram
self.gfx = gfx
self.backlit = backlit
def getspecs(self):
self.ram = (input('RAM: '))
self.gfx = (input('GFX: '))
self.backlit = (input('Backlit: '))
def displayspecs(self):
print('RAM: ', self.ram, 'GFX: ', self.gfx, 'Backlit: ', self.backlit)
class Laptop(Computer):
def __init__(self, weight):
self.weight = weight
def getspecs_laptop(self):
self.weight = (input('Enter Weight: '))
def displayspecs_laptop(self):
print('Weight: ', self.weight)
class Desktop(Computer):
def __init__(self, size):
self.size = size
def getspecs_desktop(self):
self.size = (input('Enter Size: '))
def displayspecs_desktop(self):
print('Size:', self.size)
Computer1 = Laptop
Computer1.getspecs(1)
Computer1.getspecs_laptop(2)
Computer1.displayspecs(3)
Computer1.displayspecs_laptop(5)
Computer1.displayspecs(4)
Computer2 = Desktop
Computer2.getspecs(6)
Computer2.getspecs_desktop(7)
Computer2.displayspecs(9)
Computer2.displayspecs_desktop(99)
输出 -
"D:\Coding\Python Exercises\Ass6\venv\Scripts\python.exe" "D:/Coding/Python Exercises/Ass6/Demo1.py"
RAM: 1
Traceback (most recent call last):
File "D:/Coding/Python Exercises/Ass6/Demo1.py", line 43, in <module>
Computer1.getspecs(1)
File "D:/Coding/Python Exercises/Ass6/Demo1.py", line 9, in getspecs
self.ram = (input('RAM: '))
AttributeError: 'int' object has no attribute 'ram'
Process finished with exit code 1
需要在定义的父级论文中给出什么 对象
Computer1.getspecs(这里需要添加什么?)
当我在没有给出任何值的情况下运行它时,我得到错误
TypeError: getspecs() missing 1 required positional argument: 'self'
答案 0 :(得分:2)
此代码中有太多错误可以为您提供简单的答案。但是,我可以帮助前几个:
Computer
或Laptop
之前,请先测试Desktop
课程。Computer1 = Laptop(3.5)
会为您提供一个权重Laptop
的对象。__init__
方法至少有一个必需参数。在您习惯使用基本对象之前,请对它们进行评论。我希望这会让您在代码方面取得一些进展。