社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

Johan Tuls • 3 年前 • 1463 次点击  

我想允许在泛型类中将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
 
1463 次点击  
文章 [ 1 ]  |  最新文章 3 年前
chepner
Reply   •   1 楼
chepner    3 年前

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

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