gpt4 book ai didi

从类列表中输入 Python

转载 作者:行者123 更新时间:2023-12-04 08:27:54 26 4
gpt4 key购买 nike

如何为类列表进行 python 输入。
假设我有以下类(class)。

from dataclasses import dataclass

@dataclass
class A:
name: str

@dataclass
class B:
age: int

#...
CLASSES = [A, B] #... more classes in list
现在我定义一个函数来实例化以下任何一个类
def func(resource: Union[*CLASSES], value: Union[str, int]):
return resource(value)
但是类型提示在这里无效。 如何从列表中进行类型提示?

最佳答案

这使用所有预期类共享的父类(super class)来实现您想要的:

from typing import Union
from dataclasses import dataclass


@dataclass
class MyDataMixin:
pass


@dataclass
class A(MyDataMixin):
name: str


@dataclass
class B(MyDataMixin):
age: int


def func(resource: MyDataMixin, value: Union[str, int]):
return resource
你不能像你试图做的那样在参数的类型定义中使用扩展,它只适用于运行时的变量。
正如@Selcuk 在评论中指出的,将其命名为 MyDataMixin更有意义,因为该类不打算单独使用。您可以进一步确保它只是一个抽象类 - 但这超出了问题的范围。

关于从类列表中输入 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65177236/

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