Python Interfaces

Hi,

I am trying to create a variable with an interface as its type, then assign objects that implement that interface. This works fine in TypeScript but when I translate it to Python, I am getting a type incompatible error. With namespaces in Python a decorator is needed since Python doesn’t have namespaces as a langue feature. Is there a similar step needed here because interfaces are also not a python langue feature?

Working TS:

let currentLevel : LevelInterface = null;
let currentLevelNum = 0;
let ps = sprites.create(img`. `, SpriteKind.Player);
controller.moveSprite(ps);
scene.cameraFollowSprite(ps);
function nextLevel() {
    if (currentLevel != null){
        currentLevel.endLevel();
    }
    currentLevelNum += 1;
    if (currentLevelNum == 1) {
        currentLevel = new Level1(nextLevel, ps, 4, 4);
    } else if (currentLevelNum == 2) {
        currentLevel = new Level2(nextLevel, ps, 2, 6);
    } else {
        game.over(true);
    }
}
nextLevel();

Not working Python:

currentLevel: LevelInterface = None
currentLevelNum = 0
ps = sprites.create(img(""" . """),
    SpriteKind.player)
controller.move_sprite(ps)
scene.camera_follow_sprite(ps)
def nextLevel():
    global currentLevelNum, currentLevel
    if currentLevel != None:
        currentLevel.end_level()
    currentLevelNum += 1
    if currentLevelNum == 1:
        currentLevel = Level1(nextLevel, ps, 4, 4)
    elif currentLevelNum == 2:
        currentLevel = Level2(nextLevel, ps, 2, 6)
    else:
        game.over(True)
nextLevel()
2 Likes