在 __init__ 中使用属性设置器

2024-04-27

如何在中使用属性设置器__init__没有 pylint 抱怨该属性已在外部定义__init__?

例如,以下代码仅产生一个异常,该异常被底部的 try 子句捕获。

class CircleNotUsingSetterInInit(object):

    def __init__(self, radius):
        # Notice underscore in 'self.radius
        self._radius = radius

    @property
    def radius(self):
        return self._radius

    @radius.setter
    def radius(self, radius):
        if radius < 0:
            raise ValueError("Radius must be non-negative")
        self._radius = radius


class CircleUsingSetterInInit(object):

    def __init__(self, radius):
        # Notice lack of underscore in 'self.radius'
        self.radius = radius

    @property
    def radius(self):
        return self._radius

    @radius.setter
    def radius(self, radius):
        if radius < 0:
            raise ValueError("Radius must be non-negative")
        # From pylint:
        # Attribute '_radius' defined outside __init__ (attribute-defined-outside-init)
        self._radius = radius


CircleNotUsingSetterInInit(5)
CircleNotUsingSetterInInit(-1)
CircleUsingSetterInInit(5)
try:
    CircleUsingSetterInInit(-1)
except ValueError:
    print("caught exception")

我正在使用Python 2.7.10。


在这种情况下,忽略该警告是完全安全的。 Pylint 只是没有“看到”这一点,如果不进行语法解析就很难注意到这一点。

您可以为 pylint 添加注释以在本地禁用此警告,如下所示:

class CircleUsingSetterInInit(object):

    # ....

    @radius.setter
    def radius(self, radius):
        if radius < 0:
            raise ValueError("Radius must be non-negative")
        # pylint: disable=W0201
        self._radius = radius

W0201是代码attribute-defined-outside-init,这是您收到的警告the docs http://docs.pylint.org/features.html。您应该始终在尽可能靠近源的位置添加此类禁用注释,以便 pylint 对于文件的其余部分正常工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 __init__ 中使用属性设置器 的相关文章

随机推荐

  • 节点 aws-sdk s3 文件上传大小

    当使用 Node js 的 aws sdk npm 插件时 我可以使用以下代码上传 50kb 的 pdf 到 AWS s3 var params Bucket BUCKET Key pdf key Body file ContentType
  • 如何使 React Native Android 应用程序崩溃

    我正在研究react native firebase crashlytics 我正在使用 rnfirebase 入门套件 在那里 我们将 crashlytics 与该项目集成 现在 我想让我的应用程序崩溃以检查崩溃报告 You need t
  • Rails 3.1 与 3.0 AJAX 语法差异。 jQuery 中的等效语句?

    完成 使用 Rails 进行敏捷 Web 开发 第 4 版并点击开始 AJAX 部分 第 11 章迭代 F2 在示例代码中 使用 Rails 3 0 的书籍建议创建 app views line items create js rjs 文件
  • Python——“对象布局”

    有人可以描述以下异常吗 什么是 对象布局 以及它是如何定义的 谢谢 Traceback most recent call last File test gui py line 5 in
  • 表面参数化

    我正在尝试在表面网格上获取参数化表面 从 STL 格式文件中读取 我阅读了 CGAL 示例目录提供的一些有关参数化的示例 我知道应该提供接缝线才能在任意表面上获得参数化表面 但我还是不明白如何制作接缝线 下面是我到目前为止的代码 总而言之
  • 检查 Web 服务中的 Json

    我的 json 有问题 我希望我的 Json 看起来像 data phoneId 1 token APA91bF2tN5g1TtULFE5tysRMAarygjX4w9hjTGCqT3SL PwiMV6aqTtkV3lpqLkc7msVfE
  • Google Sheets 转置具有多个值的数据

    我试图按如下方式显示示例数据 我可以使用数据透视表和多个值来完成此操作 没有任何问题 但希望找到一种使用查询或其他方法的方法 使用下面的公式部分解决了此问题 但不包括 其他 列 Index Transpose Unique Filter B
  • 为什么输出窗口无法显示结果。图像处理-线条检测

    该霍夫变换程序应该在执行时显示源图像 输出图像 带有图像的边缘检测结果窗口 但是 即使源图像和边缘检测结果 输出图像窗口也不会显示任何内容 链接https github com eToTheEcs hough transform blob
  • Spring Data Redis JedisConnectionException:流意外结束

    雷迪斯3 0 5Spring数据Redis 1 3 6绝地武士2 6 3 我们的 Web 应用程序通过 pub sub 从 Redis 接收数据 还以键 值对的形式在 Redis 上执行数据读 写 读 写发生在监听线程 独立监控线程和htt
  • 如何解决 CruiseControl.NET 中 任务中的“只能指定一个项目”错误

    我正在尝试以相当直接的方式使用 CruiseControl NET 版本 1 3 0 2918 中的任务
  • 更改数据的时区值

    我必须导入不带时区信息的数据在其中 但是 我知道我要导入的数据的具体时区 但我需要timestamp with time zone数据库中的格式 一旦我导入它并将时间戳数据类型设置为timestamp with time zone Post
  • Nancyfx 通过 HTTPS 自托管

    我尝试以自托管模式启动 nancyfx 网络服务器 执行以下代码时一切正常 public static void Main string args var hostConfig new HostConfiguration UrlReserv
  • 如何在 .NET 中操作 VB6 集合?

    我目前正在为 NET 软件设计一个接口 该接口将由 COM 对象 特别是 VB6 使用 虽然我找到了 Microsoft 的许多页面 详细介绍了如何创建 COM 互操作接口 但我目前在设计时对 Collections 的使用感到困惑 我希望
  • ANDROID NDK - android:找不到命令

    我试图完成 Android NDK 中提供的第一个示例练习 我试图在 cygwin 上运行以下命令 android update project p 然而 我得到android command not found error 我检查了我的
  • 套接字是否可以仅针对 recv() 函数设为非阻塞?

    我希望能够打电话recv 不必阻塞 所以我想让它成为非阻塞 但我不希望它在发送数据时是非阻塞的 那么能否将套接字设为非阻塞 recv 函数 或者阻塞 非阻塞模式是否影响所有套接字函数 对于 Windows 您可以使用ioctlsocket
  • 如何验证 SQL Server 流量是否已加密?

    我需要证明我们应用程序连接字符串中的加密设置有效 验证从我们的网站到 SQL Server 的流量是否确实已加密的最简单方法是什么 你可以使用类似的东西Wireshark http www wireshark org 查看通过网络传输的数据
  • 如何搜索包含表情符号的文本?

    我们有一个 MySQL InnoDB 表 带有一个文本字段COLLATE utf8mb4 unicode ci 我需要搜索包含任何表情符号字符的行 我搜索了相当多的问题 但人们似乎有一个他们正在搜索的表情符号列表 我实际上正在寻找一种可以找
  • Powershell调试事件-Action代码块

    我有脚本监视特定目录中的文件创建 我在创建 System IO FileSystemWatcher 后使用 Register ObjectEvent 它工作得很好 但如果我在 Action 代码块中设置断点 IDE 会生成 警告 不会命中
  • 如何修复 titleView 在转换过程中被屏蔽到导航栏的问题?

    在我的视图控制器中我设置titleView to a UIView其中包含一个UIImageView在其图层上使用 setCornerRadius 将其制成圆形 圆圈的上半部分位于导航栏上方 下半部分位于视图上方 如下所示 现在 当我推动此
  • 在 __init__ 中使用属性设置器

    如何在中使用属性设置器 init 没有 pylint 抱怨该属性已在外部定义 init 例如 以下代码仅产生一个异常 该异常被底部的 try 子句捕获 class CircleNotUsingSetterInInit object def