2015-07-12 60 views
-2

在这一段代码,我得到一个图像的大小和显示它。然而,当我得到它的大小我用点运算符没有括号,当我显示图像我用点运算符和括号。为什么?我觉得他们都是功能。当把括号功能后,以下点运算符?

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

回答

0

的点(.)信号的属性访问。当你做Image.open你对python说:拿Image对象,并给我open属性。

属性可以是任何东西。在这种情况下,openshow方法,即它们是功能类型,因此它们可以被调用,而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>> 
+0

非常感谢您的答复! –