何时在函数后面加括号,跟随点运算符?

时间:2015-07-12 08:24:14

标签: python function

在这段代码中,我得到一个图像的大小并显示它。但是,当我得到它的大小时,我使用没有圆括号的点运算符,当我显示图像时,我使用点运算符和括号。为什么?我觉得它们都是功能。

from PIL import Image
img=Image.open("arda.jpg")
print(image.size)
image.show()

1 个答案:

答案 0 :(得分:0)

点(.)表示属性访问。执行Image.open时,您要对python说:取Image个对象并给我open属性。

属性可以是任何。在这种情况下,open show方法,即它们是函数类型,因此可以调用它们,而size只是一个正常值。

请注意,您也可以这样做:

print(image.show)

正如您所看到的,即使show方法只是size这样的属性。

一个完整的例子:

In [1]: class Image:
   ...:     def __init__(self):
   ...:         self.size = (1,2)
   ...:     def open(self, name):
   ...:         print('Calling open')
   ...:     def show(self):
   ...:         print('calling show')
   ...:         

In [2]: image = Image()

In [3]: image.open('test')
Calling open

In [4]: image.show()
calling show

In [5]: print(image.size)    #size is just a value, so we don't call it.
(1, 2)

In [6]: print(image.show)    # show is just a (functional) value we *can* call it
<bound method Image.show of <__main__.Image object at 0x7fafacfe8a58>>