Pythoncodist
Nov 09, 2019 - 02:06
What follows is an example, in code, of polymorphism:
from abc import ABC, abstractmethod
class UIControl(ABC):
@abstractmethod
def draw(self):
pass
class TextBox(UIControl):
def draw(self):
print("Draw TextBox")
class DropDownList(UIControl):
def draw(self):
print("Draw DropDownList")
def draw(control):
control.draw()
ddl = DropDownList()
tbox = TextBox()
controls = [ddl, tbox]
for control in controls:
draw(control)
print(isinstance(control, UIControl))
Here, UIControl is derived from ABC, an abstract class having an abstract draw() method. Later in the code, the draw function takes the parameter “control” and uses it to call the draw function of the control passed to it as a parameter to draw.
My question is: how is control an instance of UIControl when that isn’t declared anywhere. The output from the “isinstance” call returns “True” proving that the “control“ parameter is indeed an instance of UIControl. I just don’t see how. Can anyone help with this?