python interactive - 实例方法输出在哪里?

时间:2018-05-26 16:13:53

标签: python

当我做一个简单的外观时,我得到输出:

>>> for x in range(1, 11):
...     print repr(x).rjust(2), repr(x*x).rjust(3),
...     print repr(x*x*x).rjust(4)
... 
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000

但是当我使用类实例方法时,我得到:

$ python3
Python 3.5.2 (default, Nov 23 2017, 16:37:01) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> class Bob():
...     def hi():
...             print("hello")
... 
>>> Bob()
<__main__.Bob object at 0x7f5fbc21b080>
>>> Bob().hi
<bound method Bob.hi of <__main__.Bob object at 0x7f5fbc21afd0>>
>>> Bob().hi()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: hi() takes 0 positional arguments but 1 was given

我在哪里可以看到&#34;你好&#34; ?

这里的第一个计时器pythonist来自Ruby和irb

1 个答案:

答案 0 :(得分:1)

两个问题。

  1. 该方法缺少self参数。这是导致错误hi() takes no arguments (1 given)的原因。 &#34; 1给出&#34; 1参数是隐含的self

    class Bob:
        def hi(self):
            print "hello"
    
  2. 您需要添加空括号才能调用它。没有它们,您只需获得方法本身的打印输出,而不是方法的结果

    >>> Bob().hi()
    hello