Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Can't print attributes from inherited classes

I’m trying to print 2 attributes of an object of a class called Computer. The class Computer inherited the classes Processor, RAM and HD, like in the code provided. In the main code, the first print works, but the second doesn’t. When I run the code, it gives me the following error:

Traceback (most recent call last):

   File "/home/ezau/PycharmProjects/Guppe/teste2.py", line 58, in module

  print(pc1.get_hd_size())
  
File "/home/ezau/PycharmProjects/Guppe/teste2.py", line 49, in get_hd_size

  return self.__hd_size

AttributeError: 'Computer' object has no attribute '_HD__hd_size'

How can the class Computer inherit the attributes and methods in the super classes? The code is provided below:

class Processor:
    def __init__(self):
        self.__brand = 'AMD'
        self.__model = 'Ryzen 5 3400g'

    def get_processor_model(self):
        return self.__model


class RAM:
    def __init__(self):
        self.__amount = '1 Tb'
        self.__ram_brand = 'HyperX'


class HD:
    def __init__(self):
        self.__hd_size = '1 TB'
        self.__hd_brand = 'Western Digital'

    def get_hd_size(self):
        return self.__hd_size



class Computer(Processor, RAM, HD):
    def __init__(self):
        super().__init__()


pc1 = Computer()
print(pc1.get_processor_model())
print(pc1.get_hd_size())

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

Do It Like This.

class Processor:
    def __init__(self):
        self.__brand = 'AMD'
        self.__model = 'Ryzen 5 3400g'

    def get_processor_model(self):
        return self.__model


class RAM:
    def __init__(self):
        self.__amount = '1 Tb'
        self.__ram_brand = 'HyperX'


class HD:
    def __init__(self):
        self.__hd_size = '1 TB'
        self.__hd_brand = 'Western Digital'

    def get_hd_size(self):
        return self.__hd_size


class Computer(Processor, RAM, HD):
    def __init__(self):
        Processor.__init__(self)
        RAM.__init__(self)
        HD.__init__(self)


pc1 = Computer()
print(pc1.get_processor_model())
print(pc1.get_hd_size())
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading