I created a base class: from abc import ABC, abstractmethod class WireShape(ABC): positionList =[] ... and a derived class: from WireClassBase import * class WireCircle(WireShape): ... In the main file I create an instance and pass it to a function that knows only the Base definition circleShape = WireCircle() circleShape.createPositions() initialiseScreen(screen, circleShape) Here it fails, the code is wrong: def initialiseScreen(screen, shape): screen.fill(white) for entry in super(shape).positionList: ... Exception has occurred: TypeError super() argument 1 must be a type, not WireCircle Continue reading...