Bom dia!
Diferente de outras linguagens que usam símbolos como chaves ou ponto e vírgula para delimitar blocos de código, o Python utiliza-se de ":" e identação (espaço em relação a margem direita) para identificar hierarquia de código. As diferenças nos exemplos abaixo:
Em TS:
class Filme {
nome: string;
constructor(nome: string) {
this.nome = nome;
}
public toString = () : string => {
return `Filme (nome: ${this.nome})`;
}
}
Em Python:
class Filme:
def __init__(nome: str):
self.nome = nome
def __str__():
return f'Filme (nome: {self.nome})'
Como visto acima, no Python, a identação marca a hierarquia de código. No exemplo em Python, class não tem espaço à esquerda então seu nível é 0; def possui 4 espaços à esquerda então seu nível é 1, indicando que está dentro do bloco class; a(s) linha(s) abaixo de def possuem 8 espaços à esquerda, logo nível 2, indicando que está dentro do bloco def acima.
Resumindo de forma facilitada:
Quem está mais a esquerda é "pai" de quem está mais a direita.
No seu caso, esse erro indica que a identação de class está errada e ainda que conserte ocorrerá o erro relacionado ao def isolado.
def é utilizado somente para declarar funções/métodos.
Pelo que entendi o correto seria usar pass no lugar do def no seu código.
Deveria ser algo assim:
class Filme:
pass
vingadores = Filme()
print(vingadores)
Espero ter ajudado.
Links úteis:
https://docs.python.org/pt-br/3/tutorial/controlflow.html#pass-statements
http://excript.com/python/indentacao-python.html