@Speakermen

Как в python создать interface?

interface User {
    id: number;
    name: string;
}

let employee: User = {
    id: 1, 
    name: "Tom"
}
console.log("id: ", employee.id);
console.log("name: ", employee.name);


Всё что придумал(

class User:
    firstName: str
    lastName: str
    age: int

def createUser(user: User) -> str:
    return f"{user.firstName} {user.lastName} {user.age}"


print(createUser("firstName"))
  • Вопрос задан
  • 213 просмотров
Решения вопроса 2
Vindicar
@Vindicar
RTFM!
typing.Protocol играет роль интерфейса, с той поправкой, что наследоваться от него потом необязательно - главное, чтобы набор полей/методов соответствовал.

abc.ABC - это именно абстрактный класс, он требует наследование от себя для соответствия, и часто предполагает наличие какой-то частичной реализации функциональности.

В отличие от него, typing.Protocol обычно применяется только для описания контракта класса, но не для частичной реализации. Так как он не требует наследования, он хорошо подходит для описания структуры объекты, который мы ожидаем на входе - без жётской привязки этого объекта к нашей иерархии классов.

"Обычно", потому что и то, и то можно использовать "не по назначению".
Ответ написан
fenrir1121
@fenrir1121
Начни с документации
Смотря о каком определении интерфейса речь. Если речь о формальных интерфейсах, для питона явный способ это сделать это использовать абстрактый базовый класс ABC.
Применительно к вашему случае я бы предложил посмотреть на построители классов данных, например NamedTuple и dataclass
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы