Как унаследовать атрибуты базового класса в Python'е? Имеется вот такой код:class BaseImage:
def __init__(self, width = 1920, height = 1080, bytespp = 3):
self.__width = width
self.__height = height
self.__bytespp = bytespp
self.__image = bytearray(self.__width * self.__height * self.__bytespp)
def __getitem__(self, coordinate):
shift = (coordinate[0] + self.__width * coordinate[1]) * self.__bytespp
return self.__image[shift : shift + self.__bytespp]

def __setitem__(self, coordinate, color):
if len(color) != self.__bytespp:
raise BadColorError
shift= (coordinate[0] + self.__width * coordinate[1]) * self.__bytespp
self.__image[shift : shift + self.__bytespp] = color
class TGAImage(BaseImage):
def __init__(self, width = 1920, height = 1080, bytespp = 3):
BaseImage(width, height, bytespp)
def write(self, target):
out = open(target, 'bw')
header_area = (
b'\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+ bytes([super.__width // 256, super().__width % 256])
+ bytes([super().__height // 256, super().__height % 256])
+ bytes([super().__bytespp <>> image = ImageIO.TGAImage()
>>> for x in range(1080):
... image[x, x] = b'\xff\x00\x00'
...
Traceback (most recent call last):
File "", line 2, in
File "/home/alexander/Codding/Render/Render/ImageIO.py", line 25, in __setitem__
if len(color) != self.__bytespp:
AttributeError: 'TGAImage' object has no attribute '_BaseImage__bytespp'
Насколько я понял, он не находит атрибут __bytespp объекта TGAImage.
Как его правильно унаследовать?

21 Авг 2019 в 07:08
340 +1
0
Ответы
1

Для того чтобы правильно унаследовать атрибуты базового класса в Python'е,, необходимо вызвать конструктор базового класса из конструктора производного класса. Измените код класса TGAImage следующим образом:

class TGAImage(BaseImage):
def __init__(self, width = 1920, height = 1080c, bytespp = 3):
super().__init__(width, height, bytespp)

Теперь атрибуты width, height и bytespp будут унаследованы из базового класса в дочерний класс.

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир