Вдогоночку. Если надо указать тип для переменной, принимающей класс Animal или классы его наследники (а не экземпляр класса Animal) — можно указать так:



animal: type[Animal]



Удобно, когда функция принимает класс. Например, функция-фабрика какая-то, которая принимает на вход класс и создаёт его экземпляр.



class Animal: pass

class Cat(Animal): pass

class Dog(Animal): pass



def create_animal(animal_cls: type[Animal]) -> Animal:

print("create another animal...")

return animal_cls()



create_animal(Cat)

create_animal(Dog)




#IT #backend #python #codebetter