可能的重复:
访问 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(使用前将#替换为@)