如何忽略类型检查并遵守 <80 个字符的行
How both ignore type check and obey line <80 chars
我有这种只对相关数据进行分组的数据类型。它应该是一个类似结构的东西,所以我选择了一个 namedtuple
.
ConfigOption = namedtuple('ConfigOption', 'one two animal vehicle fairytale')
另一方面,namedtuple
没有默认值,所以我驻留在 another answer 中提出的 hack。
ConfigOption.__new__.__defaults__ = (1, 2, "White Horse", "Pumpkin", "Cinderella")
显然,这会使类型检查失败:error: "Callable[[Type[NT], Any, Any, Any, Any, Any], NT]" has no attribute "__defaults__"
因为我很清楚这是一个 hack,所以我告诉类型检查器所以使用内联注释 # 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 标准?
有什么问题:
option_defaults = (1, 2, "White Horse", "Pumpkin", "Cinderella")
ConfigOption.__new__.__defaults__ = option_defaults # type: ignore
枚举似乎遵循了你所要求的约束,而且相当简洁。
您可以使用 Functional API,它本身表示 semantics resemble namedtuple
>>> 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>]
我有这种只对相关数据进行分组的数据类型。它应该是一个类似结构的东西,所以我选择了一个 namedtuple
.
ConfigOption = namedtuple('ConfigOption', 'one two animal vehicle fairytale')
另一方面,namedtuple
没有默认值,所以我驻留在 another answer 中提出的 hack。
ConfigOption.__new__.__defaults__ = (1, 2, "White Horse", "Pumpkin", "Cinderella")
显然,这会使类型检查失败:error: "Callable[[Type[NT], Any, Any, Any, Any, Any], NT]" has no attribute "__defaults__"
因为我很清楚这是一个 hack,所以我告诉类型检查器所以使用内联注释 # 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 标准?
有什么问题:
option_defaults = (1, 2, "White Horse", "Pumpkin", "Cinderella")
ConfigOption.__new__.__defaults__ = option_defaults # type: ignore
枚举似乎遵循了你所要求的约束,而且相当简洁。
您可以使用 Functional API,它本身表示 semantics resemble namedtuple
>>> 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>]