Monostate __new__ 的 Python 弃用警告 - 有人能解释一下原因吗?

2024-01-24

我有一个带有 Python 2.6 的基本 Monostate。

class Borg(object):
    __shared_state = {}
    def __new__(cls, *args, **kwargs):
        self = object.__new__(cls, *args, **kwargs)
        self.__dict__ = cls.__shared_state
        return self

    def __init__(self, *args, **kwargs):
        noSend = kwargs.get("noSend", False)
        reportLevel = kwargs.get("reportLevel", 30)
        reportMethods = kwargs.get("reportMethods", "BaseReport")
        contacts= kwargs.get("contacts", None)

a = Borg(contacts="Foo", noSend="Bar", )

这很高兴地给了我以下弃用警告。

untitled:4: DeprecationWarning: object.__new__() takes no parameters
  self = object.__new__(cls, *args, **kwargs)

经过一番谷歌搜索后,我发现它附加到错误#1683368 http://bugs.python.org/issue1683368。我不明白这意味着什么。它抱怨以下行

self = object.__new__(cls, *args, **kwargs)

这看起来没问题。有人可以解释一下吗laymens为什么这是一个问题。我理解“这与其他内置函数不一致,例如列表”,但我不确定我是否理解原因。有人能解释一下这告诉我正确的方法吗?

Thanks


See python 单例对象实例化 https://stackoverflow.com/questions/1363839/python-singleton-object-instantiation,并注意亚历克斯·马尔泰利 https://stackoverflow.com/users/95810/alex-martelli单例示例:

class Singleton(object):

    __instance = None

    def __new__(cls):
        if cls.__instance == None:
            __instance = type.__new__(cls)
            __instance.name = "The one"
        return __instance

The __new__ deprecation问题是吉多回答 http://mail.python.org/pipermail/python-dev/2008-February/076854.html:

该消息的意思就是它所说的。 :-) 打电话没有意义 object.__new__() 具有多个类参数,以及任何代码 这样做只是将这些参数扔进黑洞。

object.__new__() 忽略额外的唯一有意义的时候 参数是当它没有被覆盖时,但是 __init__is存在 覆盖——那么你就有了一个完全默认的 __new__ 和 构造函数参数的检查被降级到 __init__ 。

所有这一切的目的是捕获像这样的调用中的错误 object(42)(再次)传递一个未使用的参数。这是 通常是程序中存在错误的症状。

--Guido

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

Monostate __new__ 的 Python 弃用警告 - 有人能解释一下原因吗? 的相关文章

随机推荐

  • 使用 mschart 在数据点上设置标签

    我想自定义下面数据点上的标签 以便它们呈现为 使用图表上的第一个数据点作为示例 4 10 4 40 黄色类 数据点有一个可以通过编程方式设置的标签属性 DataPoint dp new DataPoint dp Label c Start
  • R XML 从同一节点选择 2 个属性 xmlAttrs()

    进一步推进 TEI 勘探 这是我的 XML Tei 文件 其中包含具有不同属性 时间 从 到 的 日期 节点 我已经使用成功提取了 when 属性的值 dateWhen lt unlist xpathApply doc date xmlGe
  • 情节内的情节

    我有情节1 curve exp x from 1 to 5 lwd 5 curve 150 exp x from 1 to 5 lwd 5 col darkblue add T 在其中我想添加以下情节 2 par mar c 7 7 1 1
  • 是否有任何理由不将 'git fetch' 设置为始终使用 --prune 选项?

    当远程计算机上的分支已被删除时 使用 git fetch prune 删除本地远程跟踪分支 使用以下命令将remote origin prune设置为true git config global fetch prune true 使得使用
  • Git 忽略除某个目录的所有子目录之外的所有特定类型的文件?

    我正在尝试创建一个 gitignore 文件 该文件将忽略所有 jar 文件 除非它们位于名为 libs 的文件夹中 这是我的基本文件结构 gitignore libs goodFile jar someFolder subFolder a
  • 如何在 firebase 托管中包含子目录

    我的网站由主页和文件夹内分隔的子页面组成 如何在我的页面主机中包含子页面 firebase 托管 弗兰克的评论确实是一个答案 Firebase 会在您指定的目录下部署所有内容 因此 如果您的主页 index html 位于当前目录中 而其他
  • TCP RST 数据包详细信息

    为什么 TCP RST 数据包不需要确认 是不是因为RST的发送方每次收到对方的数据包后都会继续发送RST 相关说明 有效的 RST 数据包中的确认号怎么可能是 0 相关说明 RST 数据包中的确认号如何 是 0 因为设置了 RST 位的段
  • 添加千分尺依赖项会导致奇怪的 Spring 代理问题

    我有一个带有私有 Scheduled 方法的简单 Spring Boot 应用程序 SpringBootApplication EnableScheduling public class DemoApplication public sta
  • 为什么 Random.nextLong 不能在 Java 中生成所有可能的 long 值?

    Random 类的 nextLong 方法的 Javadoc 指出 由于 Random 类仅使用 48 位的种子 因此该算法不会返回所有可能的长值 随机javadoc http docs oracle com javase 7 docs a
  • java.lang.ClassCastException: com.mchange.v2.c3p0.impl.NewProxyConnection

    我得到以下信息 java lang ClassCastException com mchange v2 c3p0 impl NewProxyConnection 当下面的代码执行时 你能帮我解决一下吗 ComboPooledDataSour
  • jQuery 动画颜色变化

    我正在尝试将链接颜色从当前颜色更改为其他颜色的动画 window load function article preview h1 a hover function this animate color ffffff 1500 由于某种原因
  • 比较两个日期时间

    label1显示我通过查询从数据库获取的最后交易日期 时间 label2是系统日期 时间 我有一个执行命令按钮的计时器 之后我想检查 label1 中的日期 时间是否小于 5 分钟 如果是这样的话我想展示一下按摩 但我不知道为什么我的代码无
  • 使用phonegap在android模拟器中调试javascript

    我是phonegap 和android 开发的新手 我可以知道如何在模拟器上调试 javascript 错误吗 我听说过 ADB 请问我如何在 Windows 7 系统上使用和安装它 我有一个使用 jsonp 调用的 ajax 但模拟器上没
  • 用标志交换存储库

    我有一个 IRepository 接口 其中包含许多 T 和多个实现 按需数据库 Web 服务等 我使用 AutoFac 为许多 T 注册 IRepository 具体取决于我想要为每个 T 指定的存储库类型 我还有一个基于 NET 缓存的
  • UnsupportedClassVersionError:WebSphere AS 7 中的 JVMCFRE003 错误主要版本

    我收到这个错误 java lang UnsupportedClassVersionError JVMCFRE003 错误的主要版本 类 地图 CareMonths 偏移 6 我的 Eclipse 的 Java 编译器设置为1 6我在 C P
  • 使用 Traefik 进行 SSL 直通

    我需要将 SSL 连接直接发送到后端 而不是在我的 Traefik 上解密 后端需要接收https请求 我尝试了 traefik frontend passTLSCert true 选项 但在访问我的 Web 应用程序时收到 404 页面未
  • 直接堆栈和堆访问;虚拟级还是硬件级?

    当我在 SO 上时 我读了很多指导评论 尤其是 C 语言 动态分配总是在堆上 自动分配在堆栈上 但特别是对于普通 C 我不同意这一点 因为 ISO IEC9899 甚至没有丢弃堆或堆栈的任何字 它只是提到了三种存储持续时间 静态 自动和分配
  • 如何将 Images.xcassets 置于源代码管理之下?

    因此 我将 AppIcons 和 LaunchImages 迁移到 Images xcassets 看起来工作正常 但是我对启动图像进行了一些修改 现在我去提交更改 我使用的是仅限本地的 git 存储库 并且似乎不允许将 Images xc
  • 将数据库中的数据显示到 Android 的 listView

    我试图将数据库中的所有数据显示到列表视图中 创建数据库的代码 数据处理程序 package com example testingforstack import android content ContentValues import an
  • Monostate __new__ 的 Python 弃用警告 - 有人能解释一下原因吗?

    我有一个带有 Python 2 6 的基本 Monostate class Borg object shared state def new cls args kwargs self object new cls args kwargs s