在 Python 3.6 中将自定义类列表声明为函数的参数

Ale*_*gas 3 python python-3.x

我想在 Python 3 中键入类方法的输入。我希望参数是list我创建的自定义类的 a。该方法的定义如下:

def add_report_data(self, report_data: list[ReportData]):
    pass
Run Code Online (Sandbox Code Playgroud)

ReportData 是一个普通的类,定义如下:

class ReportData:
    def __init__(self, system: str, value: int):
        self.__system = system
        self.__value = value
Run Code Online (Sandbox Code Playgroud)

执行我的代码时,我收到以下错误:

    def add_report_data(self, report_data: list[ReportData]):
TypeError: 'type' object is not subscriptable
Run Code Online (Sandbox Code Playgroud)

但是,report_data简单地将类型更改list为可以执行,但这不完全是我想要做的。知道发生了什么吗?谢谢。

Dev*_*ngh 7

你想导入typing.List并做List[ReportData]

List[ReportData]指的是list用于键入而不是的通用版本list[ReportData],它指的是数据类型列表

#Importing List from typing
from typing import List

class ReportData:
    def __init__(self, system: str, value: int):
        self.__system = system
        self.__value = value

class A:
    #Using List[ReportData]
    def add_report_data(self, report_data: List[ReportData]):
        pass
Run Code Online (Sandbox Code Playgroud)