При запуске программы не отображаются все свойства экземпляра класса
Всем привет!
Подскажите, пожалуйста, как сделать так, чтобы отображались при команде print все свойства экземпляра pt? Я просто не совсем понимаю, ведь все свойства класса PersonalComputers наследуются экземпляром класса pt или нет? Команда pt.__dict__ отображает их все, но на печати только два из дочернего класса Table.
Заранее огромное спасибо!
class PersonalComputers:
def __init__(self, ram: int = 32, hdd: int = 1024, model: str = 'Pentium', cpu: int = 3):
self._ram = ram
self._hdd = hdd
self._model = model
self._cpu = cpu
class Table(PersonalComputers):
def __init__(self, keyboard, mouse, display):
self.__keyboard = keyboard
self.__mouse = mouse
self.__display = display
super(Table, self).__init__(keyboard, mouse, display)
def __str__(self):
return f'{self.__keyboard},{self.__mouse},{self.__display}'
class LapTops(PersonalComputers):
def __init__(self, diagonal, size):
self.__diagonal = diagonal
self.__size = size
super(LapTops, self).__init__(diagonal, size)
def __str__(self):
return f'{self.__diagonal},{self.__size}'
pt = LapTops(10, 15)
print(pt) # 10,15
Ответы (1 шт):
Класс Table вообще никак не задействован.
Класс LapTops наследуется от PersonalComputers
и при инициализации вы наследуете все его атрибуты.
При этом вы передаете в класс PersonalComputers два параметра,
которые принимаются аргументами ram и hdd и меняют свои значения.
Чтобы отображались все атрибуты класса LapTops,
в т.ч. и наследованные - добавьте их в return метода __str__
class PersonalComputers:
def __init__(self, ram: int = 32, hdd: int = 1024, model: str = 'Pentium', cpu: int = 3):
self._ram = ram
self._hdd = hdd
self._model = model
self._cpu = cpu
print(f'\nclass PersonalComputers: {ram}, {hdd}, {model}, {cpu}\n')
class Table(PersonalComputers):
def __init__(self, keyboard, mouse, display):
self.__keyboard = keyboard
self.__mouse = mouse
self.__display = display
super(Table, self).__init__(keyboard, mouse, display)
def __str__(self):
return f'\n ???? Table: {self.__keyboard}, {self.__mouse},{self.__display}'
class LapTops(PersonalComputers):
def __init__(self, diagonal, size):
self.__diagonal = diagonal
self.__size = size
super(LapTops, self).__init__(diagonal, size)
def __str__(self):
return f'LapTops: {self.__diagonal}, {self.__size}\n' \
f'\tram: {self._ram}, hdd: {self._hdd}, model: {self._model}, cpu: {self._cpu}'
pt = LapTops(10, 15)
print(pt)