什么是“我的代码中的属性错误”?分析i

2024-09-30 03:25:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为解决这个问题编写代码

问题

使用面向对象编程和继承的概念,创建一个名为Computer的超类,它有两个子类Desktop和Laptop。 在Computer类中定义两个名为getspecs和displayspecs的方法,以获取和显示计算机的规范。 你可以使用任何你想要的规格。 Desktop类和Laptop类应该有一个专用的规范,例如Laptop可以有重量作为一个特殊的规范。 确保子类有自己的方法来获取和显示它们的特殊规范。 创建一个laptop/desktop对象,确保调用computer类中的所有方法以及自己类中的方法。你知道吗

我的解决办法是

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
  1. 我犯了什么错误?你知道吗
  2. 家长论文中需要给出什么 物体?你知道吗

    Computer1.getspecs(这里需要添加什么?)

当我运行它而没有给出任何值时,我得到了错误

TypeError: getspecs() missing 1 required positional argument: 'self'

Tags: selfinputsizedefcomputerramweightdesktop
1条回答
网友
1楼 · 发布于 2024-09-30 03:25:15

这段代码中有太多错误,无法给出简单的答案。不过,我可以帮你解决前几个问题:

  1. 最重要的是,你写了很多代码却没有测试。因此,您现在必须一次修复几个错误才能获得任何有用的输出。暂时把你的主程序注释掉。相反,在尝试使用LaptopDesktop之前,请测试Computer类。你知道吗
  2. 您需要实例化类的一个对象。然后您就可以按自己的方式使用类方法了。特别是,Computer1 = Laptop(3.5)会给你一个Laptop物体一些重量。你知道吗
  3. 请注意,每个__init__方法都至少有一个必需的参数。注释掉这些,直到你习惯了使用基本对象。你知道吗

我希望这将允许您在代码方面取得一些进展。你知道吗

相关问题 更多 >

    热门问题