首页 > 解决方案 > 在 Python 3.6 中声明一个自定义类列表作为函数的参数

问题描述

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

def add_report_data(self, report_data: list[ReportData]):
    pass

ReportData是一个常规类,定义如下:

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_data为简单list可以执行,但这并不是我想要做的。知道发生了什么吗?谢谢。

标签: pythonpython-3.x

解决方案


你想导入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

推荐阅读