0

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

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

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

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

以上是抛出 ​​AttributeError: module 'sample' has no attribute 'Sampler'。上面的实现不正确吗?

4

1 回答 1

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

AttributeError:模块'sample'没有属性'Sampler'。

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

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

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

于 2019-02-27T01:47:33.393 回答