PIL和python静态类型

时间:2019-10-04 12:08:31

标签: python python-imaging-library typing

我有一个函数参数,可以接受几种图像类型:

;(async () => { // Declaration to make the code async

  for(let i = 0; i < 10; i++){
      await new Promise(resolve => setTimeout(function(){ 
          console.log("hello " + i); 
          resolve();
      }, 500));
  }

  console.log("Bye bye");
})();

在这种情况下,PIL def somefunc(img: Union[np.array, Image, Path, str]): 引发以下异常:

Image

进一步检查图像对象后,这是有道理的:

TypeError: Union[arg, ...]: each arg must be a type. Got <module 'PIL.Image' from ...

如何为PIL图像指定通用类型?它来自文件,格式无关。

1 个答案:

答案 0 :(得分:0)

我没有方便的IDE,但您遇到的错误是:

. . . Got <module 'PIL.Image'

当您要引用模块中包含的Image对象时,建议您尝试将模块本身用作类型。

我猜你有个进口商品

from PIL import Image

哪个使Image引用模块,而不是对象。

您想要类似的东西

from PIL.Image import Image

以便导入对象本身。

不过请注意,现在Image引用了该对象。如果要同时引用同一文件中的对象和模块,则可能需要执行以下操作:

from PIL import Image as img
from PIL.Image import Image

现在,该模块的别名为img