使用 Pylint 忽略特定的内置函数 "id" - Python

Ignore a specific builtin "id" using Pylint - Python

我想允许将 id 重新定义为通用 class 中的一个属性。 Pylint 将此错误捕获为: bam_sdk\core_element.py:7:44: W0622: Redefining built-in 'id' (redefined-builtin) 我想允许“id”被覆盖,但不允许其他内置的像“int、str 等”。

有没有办法只针对这个特定值“id”禁用这个特定错误?

from typing import Optional


class Element:
    counter = 1

    def __init__(self, name: Optional[str], id: Optional[int]) -> None:
        self.id = id if id else self.__class__.counter
        self.name = name if name else f"{self.__class__.__name__}-{self.id}"
        self.__class__.counter += 1

这不是它抱怨的属性;这是参数名称。标准约定是在名称后附加 _ 以避免阴影。

def __init__(self, name: Optional[str], id_: Optional[int]) -> None:
    self.id = id_ if id_ else self.__class__.counter
    self.name = name if name else f"{self.__class__.__name__}-{self.id}"
    self.__class__.counter += 1

我发现修改参数的值比使用条件表达式更简洁。

def __init__(self, name: Optional[str], id_: Optional[int]) -> None:
    if id_ is None:
        id_ = self.__class__.counter

    if name is None:
        name = f"{self.__class__.__name__}-{id_}"

    self.id = id_
    self.name = name
    self.__class__.counter += 1