Python AttributeError:模块没有属性

时间:2019-02-26 21:48:08

标签: python-3.x attributeerror type-annotation

我有一个python模块文件,其中包含一堆类定义及其方法sample.py

def abc():
    ...
class Sampler(object):
    def foo(self):
       ...
class Sampler2(object):
     def bar(self):
         ...

现在,我想将此文件导入另一个python文件,并在定义如下函数时使用类型注释:say samplers.py

import sample
 class Xyz(object):
      def foobar(self, sampleparam:sample.Sampler)-> int :
            ...

以上内容引发AttributeError:模块'sample'没有属性'Sampler'。上面的实现不正确吗?

1 个答案:

答案 0 :(得分:1)

  def foobar(self, sample:sample.Sampler)-> int :
  

AttributeError:模块“ sample”没有属性“ Sampler”。

正式参数名为sample,但您已导入sample。重命名形式参数(也许为sample_),或使用以下语法:

from sample import Sampler
...
    def foobar(self, sample: Sampler) -> int:

Cf https://www.python.org/dev/peps/pep-0484/#forward-references,它说明还支持使用字符串文字。在这里,使用符号将是最合适的方法。