python-3.x 调用时的函数和方法描述

ut6juiuv  于 2022-11-26  发布在  Python
关注(0)|答案(1)|浏览(110)

我试图描述我的functionsclass methods
我的意思是,如果数据的类型与定义的类型相同,则可以强制function/methods控制inputoutput的值。
基本定义如下所示:

def SWE4_UT1_complex(root: os.path | PurePath) -> (float | int, str | int): ...

第一个问题

我实际上试图在list中定义多个值。确切地说,我想定义kpis变量是一个类示例的列表。

class KPI: ... <- this is my class

input_kpis = list()

for i in json_input.kpis:
   input_kpis.append(KPI(some constructor parameters))

如何定义此类列表必须是以下函数的输入参数:

def set_kpis(self, kpis: list) -> None: self.kpis = kpis

第二个问题完全一样

我有这个功能(它工作正常)

def SWE1_RE1(self) -> dict:
    self.update_Requirements_Released()
    self.update_Requirements_Except_Obsolete()

    if self.Requirements_Except_Obsolete < 0 or self.Requirements_Released < 0:
        self.errors.append(f'There has been error in kpi SWE.1_RE1 for project {self.project}{f" and Release {self.release}." if self.release is not False else "."}',)

        return dict({
            'semi_results': {
                'Requirements_Released': self.Requirements_Released,
                'Requirements_Except_Obsolete': self.err_Requirements_Except_Obsolete
            },
            'err': 1,
            'output': f'There has been error in kpi SWE.1_RE1 for project {self.project}{f" and Release {self.release}." if self.release is not False else "."}',
        })
    elif self.Requirements_Except_Obsolete == 0:
        self.errors.append(f'There has been error in kpi SWE.1_RT1.\n'
                           f'There are no requirements for project {self.project}{f" and Release {self.release}." if self.release is not False else "."}',)
        return dict({
            'semi_results': {
                'Requirements_Released': 0,
                'Requirements_Except_Obsolete': 0
            },
            'err': 1,
            'output': f'There has been error in kpi SWE.1_RE1.\n'
                      f'There are no requirements for project {self.project}{f" and Release {self.release}." if self.release is not False else "."}',
        })
    else:
        return dict({
            'semi_results': {
                'Requirements_Released': self.Requirements_Released,
                'Requirements_Except_Obsolete': self.Requirements_Except_Obsolete
            },
            'err': 0,
            'output': round(self.Requirements_Released / self.Requirements_Except_Obsolete, 4),
        })

如何做与第二个问题相同的list充满KPI,但dict具有特定值。
dict看起来像这样:

dict({
   str: dict({
           str: float | str,
           str: float | str
            }),
   str: int,
   str: float | int | str

我试过很多种定义方式,比如list([KPI])list(KPI) ......都不行,也许用[KPI]?作为定义是正确的。
对于dict,我也尝试过多个版本,但没有工作。问题是有一次我在第一个key中定义了两个str: float | str,问题是多个相同的定义或类似的东西。

8yparm6h

8yparm6h1#

您是否尝试将其定义为'list[KPI]',这将是KPI示例的列表。(在类型周围需要引号,因为:“下标为类“的列表”将生成运行时异常;用引号将类型注解括起来”)
如果这不是你想问的,我很抱歉。

相关问题