我有一个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'。上面的实现不正确吗?
答案 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,它说明还支持使用字符串文字。在这里,使用符号将是最合适的方法。