Скажем, я использую каркас рисования фигур со следующими классами:
class Shape(ABC):
movable: False
@abstractmethod
def movePoint(pointId, newX, newY): pass
class Rect(Shape):
aspectLocked: False
# Implement abstract function
def movePoint(pointId, newX, newY): pass
class Hexagon(Shape): pass
# ...
Я хочу использовать Rect
, Hexagon
и др. c. в моем коде, но я хочу, чтобы у каждого был метод fill()
. Тем не менее, fill()
может работать на уровне Shape
, поэтому я в конечном итоге сделаю следующее:
def _shapeFill(self):
pass
class MyRect(Rect):
def fill(self):
return _shapeFill(self)
# Same procedure for Hexagon, etc.
Я также могу сделать
for shape in [Rect, Hexagon]:
shape.fill = _shapeFill
Но такие редакторы, как PyCharm, не распознаю fill()
как метод класса, и я не знаю, является ли это решение надежным.
По сути, я хочу расширить Shape
И сделать этот расширенный метод доступным в классе Rect
без необходимости переопределить Rect
. Есть ли решение Pythoni c?
Бонусные баллы, если кто-то может сказать мне техническое имя для этого, так как я не знал, какой термин для Google. Спасибо!