Python AttributeError: модуль не имеет атрибута - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть файл модуля 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: модуль 'sample' не имеет атрибута 'Sampler'.Вышеуказанная реализация неверна?

1 Ответ

0 голосов
/ 27 февраля 2019
  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,, который объясняет, что использование строковых литералов также поддерживается.Здесь использование символов будет наиболее подходящим подходом.

...