__invert__ 方法

2024-03-27

目的是什么__invert__方法?我在探索 Python 内部结构时发现:

>>> dir(__builtins__.int)
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']

让我惊讶的是:

__builtins__.int().__invert__()

这似乎违反了所有数学规则,因为__builtins__.int()返回零,我们都知道你不能反转that整数。也许我遗漏了一些东西......所以我深入研究文档并发现__invert__相当于按位非。

  1. 为什么以及如何定义一个有用的object的逆作为其按位逆而不是更具语义意义的东西,非零有理数的逆是其倒数,零没有一,复数采取不同的策略,方法逆反转状态或未定义等。

    有人可以举一个例子,说明按位取非的情况instance类/对象的结构在高层是有用的(即不在编译器/解释器优化级别)。

  2. Python 文档指出对象的类型返回对象本身,那么为什么我们不能将零的反转定义为 None 或 NaN 对象呢?


__invert__是“二元非”运算符的实现~——它与数学中“反转”一词的任何正式定义完全无关

对于整数 0,使用 2 的补码,二进制否定0b000...000 is 0b111...111 -- or -1十进制

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

__invert__ 方法 的相关文章

随机推荐

  • 在notifyDatasetChanged()后RecyclerView闪烁

    我有一个 RecyclerView 它从 API 加载一些数据 包括图像 url 和一些数据 我使用 networkImageView 来延迟加载图像 Override public void onResponse List
  • 为什么rxjs不取消我的承诺?

    我在用rxjs in my angular应用程序 当多个数据时 我并不总是按照我想要的顺序取回数据REST已拨打电话 控制器 constructor rx Observable fromPromise this getExpenses t
  • 如何在代码中添加实体框架6提供程序?

    我在 C 应用程序中使用 Entity Framework 6 它运行良好 创建模型时 会生成包含所有必要配置的 app config 现在我不喜欢在 app config 中添加内容 因此我使用连接字符串生成器 我成功地从 app con
  • Docker RUN groupadd && useradd 指令无效

    我已经使用 Dockerfile 构建了 Docker nginx 基本 映像 其片段如下 FROM ubuntu 14 04 MAINTAINER Me
  • __CC_ARM、__ICCARM__、__GNUC__ 和 __TASKING__ 宏的含义是什么?

    我正在 stm 的 STM32l151rct6a 上工作 我偶然发现了这些宏定义 CC ARM ICCARM GNUC TASKING 有谁知道他们的意思吗 这些是针对 ARM 处理器的不同编译器 可能这些宏用于隐藏可由多个编译器编译的代码
  • C++ 类模板是模板:模板参数无效

    我的类模板有问题 我希望类中的私有数据是某种数字类型的向量的向量 即 std vector
  • 特征方法中的 Rust 生命周期不匹配

    我正在阅读 Rust 书 并尝试实现逻辑以允许文本仅添加到博客中Post如果它在Draft状态 可以发现here https doc rust lang org stable book ch17 03 oo design patterns
  • NSView 子类-drawRect:未调用

    我创建了一个NSView子类称为DAView 合并了一系列有用的方法以供以后重用 这很有效 但是 drawRect 从未在任何使用的类中调用DAView 也不在班级本身 为什么 就是这样DAView好像 DAView interface D
  • MySQL SELECT INTO OUTFILE 导出选项

    有谁知道在哪里可以找到 MySQL 的 SELECT OUTFILE 语句的所有导出选项的文档 我注意到在多个问题参数中 例如 FIELDS ENCLOSED BY delimiter FIELDS ESCAPED BY delimiter
  • Google 退出 iOS

    我试图实现社交登录 Google 在我的新应用程序中 为此 我点击了此链接 https developers google com identity sign in ios start integrating http Google 20S
  • 我可以通过编程方式确定 Airflow DAG 是计划的还是手动触发的?

    我想创建一个片段 根据 DAG 是计划的还是手动触发的来传递正确的日期 DAG 每月运行一次 DAG 根据上个月的数据生成报告 SQL 查询 如果我运行预定的 DAG 我可以使用以下 jinja 片段获取上个月的数据 execution d
  • 为什么 CSS 不支持负填充?

    我已经多次看到负填充的前景可能有助于某些页面元素的 CSS 开发变得更好 更容易 然而 W3C CSS 中没有规定负填充 这背后的原因是什么 该财产是否存在任何阻碍其使用的障碍 感谢您的回答 UPDATE例如 正如我所见 如果您使用的字体具
  • 使用 4 个(或 N 个)集合一次仅生成一个值 (1xN)(即为 tuple4+ 进行压缩)

    scala gt val a List 1 2 a List Int List 1 2 scala gt val b List 3 4 b List Int List 3 4 scala gt val c List 5 6 c List I
  • Java - java有类似C#的struct自动构造函数的东西吗

    我已经使用 C 很长时间了 现在我需要用 Java 做一些事情 java中有类似C 的struct自动构造函数的东西吗 我的意思是 在 C 中 struct MyStruct public int i class Program void
  • jQuery 1.6.4 是否已损坏或发生了什么变化? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 它适用于
  • 以编程方式移动 xib 文件中的 UILabel

    Problem 我的 UILabel 在更改其帧信息后没有移动 但在使用 NSLog 输出后 帧信息与正确的位置匹配 但标签本身实际上并没有移动 更多信息 我正在尝试将 UILabel 移动到与 UITextField 相同的位置 两者都包
  • 动态更改列名

    我有一个标题 详细信息自定义屏幕 我在其中根据标题中的下拉选择来操作显示哪些网格列 这工作得很好 但现在我也想更改一些列名称 使用记录的语法 我无法让它工作 我看不出我做错了什么 似乎没有什么区别 我已经附加到进程并在这个事件上设置了一个断
  • 为什么在编译器选项中添加搜索目录后,标准库头内会报告错误?

    我在 CodeBlocks MinGW32 中有一个项目 其设置如下 Foo src somefile1 cpp Foo src somefile2 cpp Foo src somefile1 h 标头是这样包含的 include some
  • JSON.stringify 使用 Knockout JS 变量的对象

    当前场景 function Employee data var self this variables this Forename ko observable data Forename this Surname ko observable
  • __invert__ 方法

    目的是什么 invert 方法 我在探索 Python 内部结构时发现 gt gt gt dir builtins int abs add and bool ceil class delattr dir divmod doc eq floa