Python | 使用Self类型返回类的实例对象
Self-type是Python 3.11中新增的一个函数。返回其所属类的实例的方法或函数(由self类型定义)。在我们希望强制方法返回类的实例而不是其他类型的情况下,self类型是有益的。
PEP 673 引入了一种简单直观的方法来注释返回类的实例。这是基于TypeVar的 PEP 484中规定的方法,但是更简洁并且更容易理解。
Python中返回类的实例
一个常见的用例是编写一个方法,该方法返回相同的类,通常返回self。
# 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") 输出:此程序将返回错误 “name ‘Car’ is not defined”。
Python中使用Self类型返回类的实例
在这个例子中,我们将通过在Python中使用新的Self类型来解决我们在上一个例子中遇到的错误。通过使用Self,我们可以使函数返回类的实例。正如我们在输出中所看到的,当我们调用一个类的函数时,它不会给予任何输出,我们可以使用print语句打印对象。
# 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("Maruti").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'>