Тип текущего класса в аннотации в ООП в Python
Метод может возвращать тот же объект, чтобы его сразу вызывали дальше цепочкой. Тогда в аннотации возвращаемого значения удобно указать тип текущего класса.
Для этого импортируют Self из модуля
typing и пишут -> Self после
списка параметров. Так читателю ясно:
метод вернет объект того же класса, на
котором его вызвали.
Давайте сделаем методы, которые меняют
данные и возвращают self:
from typing import Self
class User:
def __init__(self):
self.__name = None
self.__surn = None
def set_name(self, name: str) -> Self:
self.__name = name
return self
def set_surn(self, surn: str) -> Self:
self.__surn = surn
return self
@property
def name(self):
return self.__name
@property
def surn(self):
return self.__surn
Создадим объект и вызовем методы цепочкой:
user = User()
user.set_name('john').set_surn('smit')
print(user.name)
print(user.surn)
Запись -> Self описывает возвращаемый
тип для инструментов и людей. Python при
вызове ее не проверяет.
Сделайте класс Employee с методами
set_name и set_surname,
которые можно вызывать цепочкой. Укажите
возвращаемый тип Self.