当前位置: 首页 > 知识库问答 >
问题:

如何忽略类型检查并服从行

白星腾
2023-03-14

我有这个数据类型,只是对相关数据进行分组。它应该是一个类似结构的东西,所以我选择了一个命名的。

ConfigOption = namedtuple('ConfigOption', 'one two animal vehicle fairytale')

另一方面,namedtuple 没有默认值,因此我驻留在另一个答案中提出的黑客攻击中。

ConfigOption.__new__.__defaults__ = (1, 2, "White Horse", "Pumpkin", "Cinderella")

显然,这使得类型检查失败:< code >错误:“Callable[[Type[NT],Any,Any,Any,Any,Any],NT]”没有属性“_ _ defaults _ _”

因为我很清楚这是一种黑客行为,所以我使用内联注释< code># type: disable告诉类型检查器:

ConfigOption.__new__.__defaults__ = (1, 2, "White Horse", "Pumpkin", "Cinderella")  # type: disable

此时……该行变得太长了。我不知道如何打破这一行,使其在语法上正确,同时让类型检查器跳过它:

# the ignore is on the wrong line
ConfigOption.__new__.__defaults__ = \
    (1, 2, "White Horse", "Pumpkin", "Cinderella")  # type: ignore

# unexpected indentation
ConfigOption.__new__.__defaults__ =  # type: ignore
    (1, 2, "White Horse", "Pumpkin", "Cinderella")

那么,有没有办法从类型检查中排除一行,或者格式化这一行,以便跳过类型检查,并且行长符合pep-8?

共有2个答案

暴招
2023-03-14

枚举似乎遵循您需要的约束,并且非常简洁。

您可以使用函数式 API,它本身表示语义类似于命名的

>>> from enum import Enum
>>> Enum('ConfigOption', 'one two animal vehicle fairytale')
<enum 'ConfigOption'>
>>> ConfigOption = Enum('ConfigOption', 'one two animal vehicle fairytale')
>>> [c for c in ConfigOption]
[<ConfigOption.one: 1>, <ConfigOption.two: 2>, <ConfigOption.animal: 3>, <ConfigOption.vehicle: 4>, <ConfigOption.fairytale: 5>]
仲孙疏珂
2023-03-14

怎么了:

option_defaults = (1, 2, "White Horse", "Pumpkin", "Cinderella")
ConfigOption.__new__.__defaults__ = option_defaults  # type: ignore
 类似资料:
  • 像这种类型错误,发现是因为扩展版本的问题导致的错误,打算不去修复,想进行忽略,但是发现像 <!-- @ts-ignore --> 这样的注释没效果,这个怎么办好?

  • 问题内容: 我正在尝试为api 编写Web服务。因此,我编写了一个MyLogRecord类,该类继承自LogRecord。我用JAX- B注释对此类进行了注释,包括,因此它将忽略未注释的字段和属性。当我启动tomcat时,出现错误,并且其他类没有默认的构造函数,但是没有带注释的方法对Level类或任何其他类进行任何引用。这些由父类引用。 我的子类具有需要定义的所有内容。如何使JAX-B完全忽略父类

  • 问题内容: 我正在尝试获取存储在中的值的类型。 是否有可能获取存储在key处的值的类型;像什么? 问题答案: 您可以使用方法从JSON获取对象,然后使用运算符检查Object的类型。像这样的东西:

  • URI URI=URI.CREATE(url1); String requestBody=“{\”Objects\“:[471642]}”; HttpRequest request=RequestFactory.BuildPostRequest(新建GenericUrl(uri), HttpResponse response=request.execute(); '''

  • 我正在使用微批处理()从Kafka stream读取消息,处理消息并通过将结果写入另一个Kafka主题。该作业(流式查询)被设计为“永远”运行,处理大小为10秒(处理时间)的微批。已设置选项,因为Spark需要检查点。

  • 我有一个非常简单的界面类型如下 在我的单元测试中,我想检查从API调用返回的对象是否属于这种类型,但我不知道该怎么做。我的API调用如下: 但是,行