Имеется вот такой код:
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 << 3])
+ b'\x20')
dev_area = b'\x00\x00\x00\x00'
ext_area = b'\x00\x00\x00\x00'
foot_area = b'TRUEVISION-XFILE.\0'
out.write(header_area)
out.write(super().__image)
out.write(dev_area)
out.write(ext_area)
out.write(foot_area)
out.close()
Выбивает ошибку, при вызове метода __setitem__ для объекта TGAImage.
>>> image = ImageIO.TGAImage()
>>> for x in range(1080):
... image[x, x] = b'\xff\x00\x00'
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
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.
Как его правильно унаследовать?