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

在Python 3.6中声明一个自定义类列表作为函数的参数,python,python-3.x,Python,Python 3.x,我想在Python3中键入类方法的输入。我希望参数是我创建的自定义类的列表。 该方法的定义如下: def add_report_data(self, report_data: list[ReportData]): pass class ReportData: def __init__(self, system: str, value: int): self.__system = system self.__value = value Repor

我想在Python3中键入类方法的输入。我希望参数是我创建的自定义类的
列表。
该方法的定义如下:

def add_report_data(self, report_data: list[ReportData]):
    pass
class ReportData:
    def __init__(self, system: str, value: int):
        self.__system = system
        self.__value = value
ReportData
是一个常规类,定义如下:

def add_report_data(self, report_data: list[ReportData]):
    pass
class ReportData:
    def __init__(self, system: str, value: int):
        self.__system = system
        self.__value = value
执行代码时,我收到以下错误:

    def add_report_data(self, report_data: list[ReportData]):
TypeError: 'type' object is not subscriptable
但是,将
report\u data
的类型更改为简单的
list
是可以执行的,但这并不是我想要做的。知道发生了什么事吗?谢谢。

您想导入并执行
列表[ReportData]

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


正如Devesh回答的那样,您的问题是实际上您没有使用类型为
ReportData
list
键入
report\u data
list
参数,而是试图从索引
ReportData
处的
list
获取元素,这会导致错误,因为
ReportData
不是有效的索引

当尝试键入类型为
MyClass
list
时,应使用
typing.list
并传递该元素类型。

On和Python 3.7+

from __future__ import annotations

您可以使用
list
作为类型注释。您的代码应该按照您编写的方式工作。

添加报告数据
报告数据
类的一部分吗?正如第一条评论所暗示的,您的问题并不清楚,因为您没有显示一个显示错误的可运行代码段。请阅读并跟读。