'AttributeError: модуль' usbiss 'не имеет атрибута Aclass' при создании экземпляра класса - PullRequest
0 голосов
/ 17 декабря 2018

Попытка написать пакет Python, и я не могу создать экземпляр класса в одном из моих исходных файлов.

Макет пакета:

-packagedir
----README.md
----setup.py
----packagename
--------__init__.py
--------package.py
--------modules
------------file1.py
------------file2.py

в init .py внутри packagename у меня есть:

from . modules import file1
from . modules import file2

Файл file1.py содержит класс:

class File1():
    def __init__(self):
        self.val = 0
        # Other methods and such

Файл file2.py содержит класс:

class File2():
    def __init__(self):
        self.type = 0
        # Other methods and such

и в package.py у меня есть такой класс:

class Aclass(file1.File1, file2.File2):
    def __init__(self):
        # nothing important in here yet

Я собрал и установил свой пакет так:

python3 setup.py sdist
sudo pip3 install dist/package-0.1.tar.gz

Теперь я создаю файл с именемtest.py и вставьте в него следующее:

import package
iss = package.Aclass()

, когда я запускаю тестовый файл, я получаю следующую ошибку:

AttributeError: module 'usbiss' has no attribute 'Aclass'

Я не понимаю, почему Python являетсяне позволяет мне создать экземпляр класса Aclass и думает, что я получаю доступ к атрибуту.Я уверен, что что-то в корне неверно в моих заявлениях об импорте или что-то в этом роде, но я не знаю, что это такое.Как мне исправить это, чтобы я мог создать экземпляр Aclass и использовать его методы?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

Проблема заключалась в том, что я импортировал сам пакет, но не модуль в этом пакете.Я изменил свой импорт в test.py на:

from package import package

, и это исправило мою проблему.

0 голосов
/ 17 декабря 2018

Вы уверены, что обрабатываете import правильно и не вводите циклические зависимости?
Также:

def __init__(file1.File1, file2.File2):
def __init__():

В ваших методах инициализации отсутствует self.Они должны быть:

def __init__(self, file1.File1, file2.File2):
def __init__(self):
...