Self Type (Самостоятельный тип) — это совершенно новая функция, добавленная в Python 3.11. Метод или функция, возвращающая экземпляр класса, которому он принадлежит, определяется типом self. В ситуациях, когда мы хотим обеспечить, чтобы метод возвращал экземпляр класса, а не какого-либо другого типа, использование собственного типа является преимуществом.
Возврат экземпляра класса в Python
В этом примере мы собираемся написать простую программу, объясняющую, когда мы вернемся к самому классу и что произойдет.
Python3
# Define a class
class
Car:
def
set_brand(
self
, brand:
str
)
-
> Car:
self
.brand
=
brand
return
self
# call set_brand method
Car().set_brand(
"Maruti"
)
Вывод: эта программа вернет ошибку, что «имя автомобиля не определено».
Возврат экземпляра класса с использованием типа Self в Python
В этом примере мы собираемся устранить ошибку, с которой столкнулись в предыдущем примере, используя новый Self Type в Python. Используя Self, мы можем создать функцию, которая возвращает экземпляр класса. Как видно из вывода, когда мы вызываем функцию класса, она не дает никакого вывода, и мы можем печатать объекты с помощью оператора печати.
Python3
# Import Self
from
typing
import
Self
# Define a base class
class
Car:
def
set_brand(
self
,
brand:
str
)
-
> Self:
self
.brand
=
brand
return
self
# Define a child class
class
Brand(Car):
def
set_speed(
self
,
speed:
float
)
-
> Self:
self
.speed
=
speed
return
self
# Calling object inside print statement
(Car().set_brand(
"Maruti"
))
(Brand().set_brand("Mar\
uti").set_speed(
110.5
))
(
type
(Car().set_brand(
"Maruti"
)))
(
type
(Brand().set_brand(
"Maruti"
).set_speed(
110.5
)))
Выход:
<__main__.Car object at 0x000002365E33F3D0> <__main__.Brand object at 0x000002365E33F3D0> <class '__main__.Car'> <class '__main__.Brand'>