在这段代码中,我得到一个图像的大小并显示它。但是,当我得到它的大小时,我使用没有圆括号的点运算符,当我显示图像时,我使用点运算符和括号。为什么?我觉得它们都是功能。
from PIL import Image
img=Image.open("arda.jpg")
print(image.size)
image.show()
答案 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>>