【发布时间】:2022-12-23 14:23:39
【问题描述】:
我想确定,当类创建是某种类型时传递的参数之一。这是一个例子:
from __future__ import annotations
from dataclasses import dataclass
@dataclass(frozen=True, order=True)
class ListItems:
items: list | str | int | ListItems
class PList:
def __init__(self, name: str, items: ListItems):
self.type = "list"
self.name = name
self.items = items
a = PList('asd', ['asd'])
接下来的想法是:items只能是string、int数据类型的列表或其他清单string 和 int,它是嵌套的。例如:
[] OK
[1,2,'asd'] OK
[[1,2,3],'asd',[]] OK
[{}] NOT OK
['test', [{}]] NOT OK
有没有可能在 Python 中实现这样的东西?
我对 Python OOP 不是很熟悉,但据我所知,没有像其他编程语言那样的接口和/或抽象类的本地实现。
附言: 你看到的代码,只是我的实现尝试,它没有用。
【问题讨论】:
-
您希望参数的类型在运行时或由静态检查器(例如 mypy)或两者进行检查吗?
-
您可以检查类型并基于该类型允许或不允许?
-
@mkrieger1 实际上,仅在运行时
-
然后@dokichan你为什么要问类型提示?