Self Type в Python

начало работы с массивами Python Программирование и разработка

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
print(Car().set_brand("Maruti"))
print(Brand().set_brand("Mar\
uti").set_speed(110.5))
print(type(Car().set_brand("Maruti")))
print(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'>

Читайте также:  Функция CSS types.sin()
Оцените статью
bestprogrammer.ru
Добавить комментарий