Python AttributeError: у модуля нет атрибута

У меня есть файл модуля 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: модуль «образец» не имеет атрибута «Сэмплер». Является ли приведенная выше реализация неверной?


person Sohil    schedule 26.02.2019    source источник


Ответы (1)


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

AttributeError: модуль «образец» не имеет атрибута «Сэмплер».

Формальный параметр называется sample, но вы импортировали sample. Переименуйте формальный параметр (возможно, в sample_) или используйте следующий синтаксис:

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

Cf https://www.python.org/dev/peps/pep-0484/#forward-references, в котором объясняется, что также поддерживается использование строковых литералов. Здесь использование символов было бы наиболее подходящим подходом.

person J_H    schedule 27.02.2019
comment
Извините за плохой выбор примеров имени параметра. Я обновил приведенный пример - person Sohil; 27.02.2019