gpt4 book ai didi

python - 在父类中为返回任何子类对象的方法键入提示

转载 作者:行者123 更新时间:2023-12-05 03:40:32 26 4
gpt4 key购买 nike

我创建了一个 API,其中许多功能都在一个基类中实现,多个子类继承自该基类。当通过子类调用时,基类的方法将始终返回与子类相同类型的对象。我正在努力弄清楚如何正确键入提示不同方法的输出

作为一个简单的例子,假设我有以下类:

from copy import deepcopy


class BaseClass:
def __init__(self, a: str, b: str) -> None:
self.a = a
self.b = b

def copy(self):
return deepcopy(self)


class SubClass(BaseClass):
def __init__(self, x: float, a: str, b: str) -> None:
super().__init__(a, b)
self.x = x

我应该如何键入提示 BaseClass.copy() 以便清楚地知道如果从 SubClass 调用它会返回一个 SubClass 对象> 对象? (对于从 BaseClass 派生的任何其他类,等等)。

最佳答案

您可以使用 TypeVar :

from copy import deepcopy
from typing import TypeVar

T = TypeVar("T")

class BaseClass:
def __init__(self, a: str, b: str) -> None:
self.a = a
self.b = b

def copy(self: T) -> T:
return deepcopy(self)

虽然T本身声明没有限制,但是通过self的注解来约束,所以copy会返回一个对象与其对应实例相同的类型。

关于python - 在父类中为返回任何子类对象的方法键入提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68082661/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com