从不可变类型继承[重复]

2023-12-07

我想知道继承是如何运作的int, list, string和其他不可变类型。

基本上我只是继承一个这样的类:

class MyInt(int):
    def __init__(self, value):
        ?!?!?

我似乎无法弄清楚,如何设置像它所设置的值int?如果我做self.value = value那么我的类将像这样使用:

mi = MyInt(5)
print(mi.value) # prints 5

而我想这样使用它:

mi = MyInt(5)
print(mi) # prints 5

我该怎么做呢?


你可以子类化int,但因为它是不可变的你需要提供一个.__new__()构造函数钩子:

class MyInt(int):
    def __new__(cls, value):
        new_myint = super(MyInt, cls).__new__(cls, value)
        return new_myint

您确实需要致电基地__new__构造函数来正确创建您的子类。

在 Python 3 中,您可以省略参数super()共:

class MyInt(int):
    def __new__(cls, value):
        new_myint = super().__new__(cls, value)
        return new_myint

当然,这假设您想要操纵value在传递到之前super().__new__()或操纵new_myint回来之前再做一些;否则你也可以删除整个__new__方法并将其实现为class MyInt(int): pass.

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

从不可变类型继承[重复] 的相关文章

随机推荐

  • JS 将字符串转换为多维对象键

    我有一个字符串 例如 convert lamp stamp glass nose 我想创建一个对象键 鼻子 坦克对象已经创建 tank convert lamp stamp glass nose 我该怎么做呢 我使用 split 得到了数组
  • 在 Inno Setup 中从 Internet 安装文件

    我正在使用 Inno Setup 来分发我的应用程序 是否可以检查 Inno Script 的特定条件 并根据需要从互联网下载并安装一些文件 创新设置6 1较新的版本具有内置的下载支持 不再需要第三方解决方案 检查Examples Code
  • Google Chrome 扩展程序登录功能

    我正在开发一个 Chrome 扩展程序 我正在努力实现这一目标 单击 chrome 扩展程序图标 您会看到一个简单的登录页面 输入您的凭据 我需要将它们发送到 REST API 该 API 具有一个登录方法 该方法将返回我需要的 API 密
  • 将 Excel 工作簿另存为 HTML - 无法访问“System.IO.MemoryStream”

    我有一些代码想要将 Excel 电子表格转换为html所以我可以用它作为电子邮件的正文 Excel Application excel new Excel Application Excel Workbook workbook excel
  • 如何更改 .NET 应用程序的预定义 userconfig 目录?

    目前我的应用程序的用户设置存储在这个默认目录中 C Users User Name AppData Roaming Company Name Assembly Name vshos Url Hash Assembly Version 我知道
  • 是否有任何营销 API webhooks 用于修改广告系列/广告集/广告

    在我编写的程序中 用户可以暂停 取消暂停活动 我想知道如果用户通过 Facebook 广告管理器修改营销活动 我是否可以更新营销活动的状态 我能找到的唯一网络钩子是领先一代 看来我发现了隐藏的文档here 你必须将 ads rules en
  • 部署后对参数的更改未显示在报表服务器上

    我的 SSRS 2008 报告中有 7 个参数 3 个字符串多重选择 1 个日期时间 3 个字符串值 并且我已在默认值 它在我的 Visual Studio 2008 预览窗口中工作正常 但是部署后到我的报告服务器 未选中参数的 NULL
  • 仅打印 Python 中特定键的字典术语的值

    我想知道如果我有一本字典并且我想只打印出特定键的值 我会在Python 中做什么 它将位于变量中以及 dict Lemonade 1 45 87 Coke 23 9 23 Water 98 2 127 inp input Select ke
  • 是否可以从模拟器内访问照片的地理标记元数据?

    我编写了一个应用程序来检索照片的 GPS 元数据 它可以在我的 iPhone 上运行 但不能在模拟器中运行 如果我将包含地理标签的照片拖到模拟器上 它就会被放入照片库中 然后 我的应用程序发出以下代码 ALAssetRepresentati
  • nginx 位置通过文件扩展名语法拒绝

    我编写了两种不同的设置 一种用于拒绝对点文件的访问 另一种用于拒绝对文件扩展名列表的访问 但是 是否有任何语法可以拒绝其他文件扩展名列表中的点文件 location 7z bak bash bz2 config dist engine fl
  • 使用应用程序脚本拆分(分解)谷歌电子表格中的合并表格单元格

    当操作 复制 移动 包含合并单元格的范围时 我总是收到错误 您的粘贴与合并单元格重叠 请取消合并单元格并重试 但是当尝试使用以下命令取消合并范围内的单元格时Range breakApart 我收到另一个错误 所选单元格无法合并 这更令人困惑
  • 优雅的 Haskell 案例/错误处理

    我试图更好地理解如何处理 haskell 中的错误情况 并编写了一些代码来帮助我解决这个问题 是否有更好的方法 更优雅 更短 更通用 来处理多个替代方案 例如嵌套的 case 表达式 关于该主题有什么好的教程吗 本例的虚构类型 这有点简化
  • Python:将 Unicode-Hex-String 转换为 Unicode

    我有一个由带有该函数的 unicode 字符串制成的十六进制字符串 def toHex s res for c in s res 02X ord c at least 2 hex digits can be more return res
  • 推动 JavaScript 性能的限制是什么?

    在过去的几个月里 我一直在构建一个原型页面 该页面使用了大量 SVG 并且通常包含很多元素 JavaScript 和服务器端 大量 AJAX 也正在处理大量数据 页面上有数千个事件侦听器 重点是 它相当重 在 JS 中执行此类操作的最大障碍
  • Android 应用程序的 Facebook 登录(使用释放密钥)

    我正在尝试在 Google Play 上发布我的应用程序 我的应用程序中有 Facebook 登录信息 直到昨天 一切都工作正常 直到我运行应用程序时debug keystore 但是 当我使用自己的发布密钥并签署我的应用程序时 Faceb
  • 如何在Electron框架中使用html模板?

    我需要构建一个具有多个窗口的跨平台应用程序 所以我想知道如何在Electron中使用html模板 基于类似的问题据我所知 Electron 中没有内置的 html 模板语言 这实际上很棒 因为它允许您使用任何其他模板语言 我目前正在玩ejs
  • 使用远程计算机通过 JupyterLab 打开网站(类似于代理)

    我通过连接SSH到正在运行的远程计算机JupyterLab 当我在中运行以下代码时JupyterLab我看到我的本地计算机的 IP 地址 from IPython display import IFrame IFrame src https
  • 如何在 Android 中的列表视图中显示 Dropbox 文件?

    我已经在这里浏览答案有一段时间了 并在我的代码中使用了大部分答案 但它似乎仍然不起作用 我只想显示 Dropbox 帐户中内容的列表视图 并为用户提供下载文件 文件夹的选项 我的 MainActivity 过去常常在打开后立即崩溃 用处理
  • 如何使用 CURL 请求构建、准备和设置 JWT 授权承载令牌

    为了发送和接收授权持有人 我确实阅读了此内容使用 cURL 设置 Bearer 令牌的正确方法和这个如何正确使用 Bearer 代币 这是我的代码 url http www example com phpinfo php data arra
  • 从不可变类型继承[重复]

    这个问题在这里已经有答案了 我想知道继承是如何运作的int list string和其他不可变类型 基本上我只是继承一个这样的类 class MyInt int def init self value 我似乎无法弄清楚 如何设置像它所设置的