-2
在这一段代码,我得到一个图像的大小和显示它。然而,当我得到它的大小我用点运算符没有括号,当我显示图像我用点运算符和括号。为什么?我觉得他们都是功能。当把括号功能后,以下点运算符?
from PIL import Image
img=Image.open("arda.jpg")
print(image.size)
image.show()
在这一段代码,我得到一个图像的大小和显示它。然而,当我得到它的大小我用点运算符没有括号,当我显示图像我用点运算符和括号。为什么?我觉得他们都是功能。当把括号功能后,以下点运算符?
from PIL import Image
img=Image.open("arda.jpg")
print(image.size)
image.show()
的点(.
)信号的属性访问。当你做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>>
非常感谢您的答复! –