我的代码中的'属性错误是什么? ?分析一下

时间:2018-06-06 18:09:58

标签: python python-3.x

我正在编码来解决这个问题

问题

使用面向对象编程和继承的概念,创建一个名为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
  1. 我在做什么错误?
  2. 需要在定义的父级论文中给出什么 对象

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

  3. 当我在没有给出任何值的情况下运行它时,我得到错误

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

1 个答案:

答案 0 :(得分:2)

此代码中有太多错误可以为您提供简单的答案。但是,我可以帮助前几个:

  1. 最重要的是,你编写了很多代码而没有测试任何代码。因此,您现在必须立即修复多个错误以获得任何有用的输出。暂时退出您的主程序。相反,在尝试使用ComputerLaptop之前,请先测试Desktop课程。
  2. 您需要实例化该类的对象。 然后您可以按照自己的方式使用类方法。特别是,Computer1 = Laptop(3.5)会为您提供一个权重Laptop的对象。
  3. 请注意,每个__init__方法至少有一个必需参数。在您习惯使用基本对象之前,请对它们进行评论。
  4. 我希望这会让您在代码方面取得一些进展。