Py学习  »  Python

使用Pylint-Python忽略特定的内置“id”

Johan Tuls • 2 年前 • 709 次点击  

我想允许在泛型类中将id重新定义为属性。 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
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/133463
 
709 次点击  
文章 [ 1 ]  |  最新文章 2 年前
chepner
Reply   •   1 楼
chepner    2 年前

这不是它抱怨的属性;这是参数名。标准惯例是附加一个 _ 以避免阴影。

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