相关疑难解决方法(0)

访问文字属性适用于所有类型,但不适用于`int`; 为什么?

我已经读过python中的所有东西都是一个对象,因此我开始尝试不同的类型并调用__str__它们 - 起初我感到非常兴奋,但后来我感到困惑.

>>> "hello world".__str__()
'hello world'
>>> [].__str__()
'[]'
>>> 3.14.__str__()
'3.14'
>>> 3..__str__()
'3.0'
>>> 123.__str__()
  File "<stdin>", line 1
    123.__str__()
              ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
  • 为什么something.__str__()除了"一切"之外还要工作int
  • 123不是一个对象类型的int

python language-lawyer python-2.7 python-3.x

52
推荐指数
4
解决办法
2376
查看次数

为什么"1.real"是语法错误但"1 .real"在Python中有效?

所以我在twitter上看到了这两个 问题.如何1.real语法错误但1 .real不是?

>>> 1.real
  File "<stdin>", line 1
    1.real
         ^
SyntaxError: invalid syntax
>>> 1 .real
1
>>> 1. real
  File "<stdin>", line 1
    1. real
          ^
SyntaxError: invalid syntax
>>> 1 . real
1
>>> 1..real
1.0
>>> 1 ..real
  File "<stdin>", line 1
    1 ..real
       ^
SyntaxError: invalid syntax
>>> 1.. real
1.0
>>> 1 .. real
  File "<stdin>", line 1
    1 .. real
       ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

python

31
推荐指数
2
解决办法
1834
查看次数

为什么1 .__添加__(2)不能解决?

可能重复:
访问python int literals方法

在Python中everything is an object.

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

1.__add__(2)
Run Code Online (Sandbox Code Playgroud)

但是,这确实有效:

n = 1
n.__add__(2)
Run Code Online (Sandbox Code Playgroud)

n和之间有什么区别1

这不是一个设计失败,它不起作用?例如,它也适用于string文字.

"one".__add__("two")
Run Code Online (Sandbox Code Playgroud)

相比之下,它也适用于其他纯面向对象的语言.

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

Console.WriteLine(100.ToString());
Run Code Online (Sandbox Code Playgroud)

那么,Python从什么C#角度来区别everything is an object

python literals operator-keyword

15
推荐指数
2
解决办法
668
查看次数

Integer literal是Python中的一个对象?

可能重复:
访问python int literals方法

Python中的所有东西都是一个对象.甚至一个数字也是一个对象:

>>> a=1
>>> type(a)
<class 'int'>
>>>a.real
1
Run Code Online (Sandbox Code Playgroud)

我尝试了以下内容,因为我们应该能够访问对象的类成员:

>>> type(1)
<class 'int'>
>>> 1.real
  File "<stdin>", line 1
    1.real
         ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?

python syntax

14
推荐指数
3
解决办法
1220
查看次数

Python整数上的语法混淆无效

我们知道一切都是Python中的对象,因此包括整数.这样做dir(34)并不奇怪,有可用的属性.

我的困惑源于以下内容,为什么34.__class__当我知道34确实具有该属性时,do 会给出语法错误__class__.此外,为什么将一个整数绑定到一个名称,比如说x,然后x.__class__产生我期望的int类型的答案?

python

5
推荐指数
1
解决办法
529
查看次数

为什么我不能直接在int对象上调用方法?

可能重复:
访问python int literals方法
Integer literal是Python中的一个对象?

在python中,调用方法或直接在文字上查找属性是可能的,有时甚至是常见的:

>>> "-".join("abc")
'a-b-c'
>>> {1: 3, 2: 9}.pop(1)
3
>>> 3j.imag
3.0
>>> 8.0.__add__(8)
16.0
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,这不适用于整数对象:

>>> 3.__add__(42)
  File "<stdin>", line 1
    3.__add__(42)
            ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

为什么不?

python

4
推荐指数
1
解决办法
241
查看次数

为什么在Python中调用数字文字的方法时出现语法错误?

我只能在将数字绑定到名称时调用数字上的方法:

>>> a = 5
>>> a.bit_length()
3
Run Code Online (Sandbox Code Playgroud)

我可以调用字符串文字的方法:

>>> 'Hello World'.lower()
'hello world'
Run Code Online (Sandbox Code Playgroud)

但是我不能在数字文字上调用方法:

>>> 5.bit_length()
Run Code Online (Sandbox Code Playgroud)

这提出了一个SyntaxError.是否有实际的理由,还是历史性的?

编辑刚刚找到这个相关的问题,显示了解决方法(这里也已经提出过).我想这也回答了主要问题 - 通过简单的解决方法,可能没有足够的好处使语法更复杂(并且更难解析)来使这项工作.

python syntax

4
推荐指数
1
解决办法
133
查看次数

调用数字文字的方法

我可以str在字符串文字上调用方法.但我不能int在整数数字文字上调用方法:

Python 2.7.5+ (default, Sep 19 2013, 13:48:49) 
>>> 1.bit_length()
  File "<stdin>", line 1
    1.bit_length()
               ^
SyntaxError: invalid syntax
>>> a = 1
>>> a.bit_length()
1
>>> ', '.join(['1', '2'])
'1, 2'
>>> 
Run Code Online (Sandbox Code Playgroud)

这是为什么?

python python-2.7

2
推荐指数
1
解决办法
293
查看次数