在Python 3.6中声明一个自定义类列表作为函数的参数
我想在Python3中键入类方法的输入。我希望参数是我创建的自定义类的在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
列表。
该方法的定义如下:
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
作为类型注释。您的代码应该按照您编写的方式工作。添加报告数据
是报告数据
类的一部分吗?正如第一条评论所暗示的,您的问题并不清楚,因为您没有显示一个显示错误的可运行代码段。请阅读并跟读。