为什么 1.__add__(2) 不起作用? [复制]

2024-05-08

可能的重复:
访问 python int 文字方法 https://stackoverflow.com/questions/10955703/accessing-a-python-int-literals-methods

在Python中,everything is an object.

但话说回来,为什么下面的代码片段不起作用呢?

1.__add__(2)

然而,这确实有效:

n = 1
n.__add__(2)

有什么区别n and 1?

不起作用难道不是设计失败吗? 例如,它确实适用于string文字也是如此。

"one".__add__("two")

相比之下,它在其他纯面向对象语言上也运行良好。

让我们仔细看看这个编译 c# 的例子:

Console.WriteLine(100.ToString());

话又说回来,有什么区别Python from C#的角度来看everything is an object?


Python 的解析器故意非常简单——它对自身施加的约束之一是,为了弄清楚一个标记的含义,它只能向右查找一个标记(它是一个LL(1) 解析器 http://en.wikipedia.org/wiki/LL_parser).

因此,它看到 [number][dot],并确定它是浮点文字。'_'不是浮点文字中的有效字符,因此会出现语法错误。

解决这个问题最明显和最常见的方法是将数字放在括号中:

(1).__add__(2)

这迫使它解释1在解析器的限制内,作为整数文字,点作为属性访问。

另一个有趣的解决方法是:

>>> 1 .__add__(2) 
3

也就是在前面加一个空格.。事实证明,Python 总是为任何属性查找留有空格:

>>> range(4) .count(3)
1

我发现这很令人惊讶,但Python似乎对待.根据类似的规则+,因此将在其周围留出尽可能多的空间。

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

为什么 1.__add__(2) 不起作用? [复制] 的相关文章

随机推荐

  • android拦截最近的应用程序按钮

    我有一个针对儿童的应用程序 我不希望他们能够单击 最近使用的应用程序 按钮 看起来像两个矩形叠在一起的按钮 我正在负责捕获后退按钮和主页按钮 并且我已经搜索并阅读了很多有关尝试捕获 最近的应用程序 按钮的信息 但大多数人说你不能 或者他们的
  • 您使用分支/标签/主干约定吗?

    您是否始终遵循将分支 标签和主干目录放在 Subversion 存储库顶层的惯例 最近 我不再打扰 也没有发生任何不好的事情 还 如果需要创建目录树 应该可以移动目录树 我是不是给以后惹麻烦了 您是否尝试过分支或标记 到那时 就没有问题了
  • 为什么仍然需要在 using 语句的 RHS 中使用 typename 来消除依赖类型的歧义?

    我很清楚为什么需要使用typename对于依赖类型 因为编译器在看到类似的内容时可能无法消除类型和变量声明之间的歧义T type 参见例如这个答案 https stackoverflow com a 613132 3093378一个很好的解
  • 如何在目标c中从网络提供商获取用户的当前位置?

    在离线模式下如何获取用户在ios中的当前位置 是否可以通过网络提供商获取位置 我给你完整的解决方案 如果你想实现这一点 你应该使用核心定位框架 第一步 在 h文件中导入CoreLocation框架 import
  • 在 macOS 上更新 GNU make

    我从下载了 GNU make 4 2 1here http ftp gnu org gnu make make 4 2 1 tar gz 并按照展开文件夹中的 INSTALL 文件中的说明安装它 现在我跑make v在 shell 中 我仍
  • AppCache 卡在 Android 原生浏览器上

    我在尝试实现应用程序缓存功能的移动网站上遇到了一个奇怪的问题 它在桌面 Chrome 和 Firefox Android 版 Chrome 和 iOS 上运行良好 但 Android 原生浏览器 在 Samsung Galaxy S3 上运
  • 为线条指定颜色

    我试图在 matplotlib 中绘制可变数量的行 其中 X Y 数据和颜色存储在 numpy 数组中 如下所示 有没有办法将颜色数组传递到绘图函数中 这样我就不必采取额外的步骤来单独为每条线分配颜色 我是否应该将 RGB 颜色数组转换为另
  • MVC4优化如何允许部分视图脚本?

    部分视图和 MVC 的一个问题是 如果您的可重用部分视图需要某些 JavaScript 则无法包含它并将其加载到页面底部的脚本部分 除了性能问题之外 这意味着像 jquery 这样必要的东西还不存在 你必须使用任何依赖 jquery 的代码
  • 如何从头开始重复C程序并清理屏幕和第一个输入值?

    我是编程新手 我写了一个简单的程序 我想一次又一次地重复该程序 并且只有当用户想要退出时它才能退出 这是我的程序 include
  • CakePHP 后退和前进按钮没有布局

    我们正在 CakePHP 中构建一个大型 CMS 并集成了 Croogo 安装 我们最近遇到了一个问题 当用户单击back在浏览器中 或forward按钮 您最终得到的是使用以下命令的视图 ctp 文件blank布局 所以没有样式 js 等
  • for 和 while 循环中没有循环条件

    while cond fine for cond fine 但是当我删除条件部分时 while syntax compilation error for Infinite loop 这些循环内部是如何实现的 或者 编译器 解析器 如何知道中
  • 验证 Laravel 中的选择表单

    我的联系表上有这个 html div class form group div
  • 正确的需要授权的资源的http状态代码

    如果用户尝试访问需要用户登录的页面 则返回的正确 http 状态代码似乎存在很多混乱 那么当我显示登录页面时基本上会发送什么状态代码 我很确定我们需要在4xx range 我在这里讨论的不是 HTTP 身份验证 因此我们至少不会使用 1 个
  • R:使用 RGDAL 和 RASTER 包时抛出错误

    给所有可能相关的人 这是源代码 GRA D1 lt raster files 1 Sets up an empty output raster GRA D1 lt writeStart GRA D1 filename GRA D1 tif
  • R 语言 - 等待用户使用 scan 或 readline 输入

    我试图让用户输入一些关键字进行查询 在我的脚本中我使用了 scan 或 readline 我使用 R 嵌入脚本编辑器 Windows 进行了尝试 但是当我执行代码时 它使用我的下一行脚本作为标准输入 这是我的 部分 脚本 keywords
  • 请解释JQuery中$({deg: 0})的含义

    有人可以向我解释一下这是什么意思吗 deg 0 in 使用 jquery animate 跨浏览器进行 CSS 旋转 https stackoverflow com questions 15191058 css rotation cross
  • 定时器启动/停止参数

    自从加入这个社区以来 我在技能和进步方面取得了突飞猛进的进步 你们都是一个巨大的帮助 我无法提供一个计时器 该计时器已在启动和停止时实现了某些参数 我要么收到错误消息 局部变量计时器可能尚未初始化 要么没有收到错误消息 但什么也没有发生 也
  • 如何删除空 html 标签(其中包含空格和/或其 html 代码)

    需要 preg replace 的正则表达式 这个问题没有在 另一个问题 中得到回答 因为并非我要删除的所有标签都不为空 我不仅要从 HTML 结构中删除空标签 还要删除包含换行符以及空格和 或其 html 代码的标签 可能的代码是 删除匹
  • CSS - 将文本保留在图像下方

    我正在尝试创建一个简单的图片库 有人告诉我使用 float left 但是当我这样做时 页脚中的所有文本都会射到第一张图像 我已经搜索了大约一个小时试图找到解决方案 但我找不到任何东西 我尝试过使用边距 边框 不同的对齐方式和各种不同的小东
  • 为什么 1.__add__(2) 不起作用? [复制]

    这个问题已经存在了 可能的重复 访问 python int 文字方法 https stackoverflow com questions 10955703 accessing a python int literals methods 在P