Создать пространство имен Python без имени файла - PullRequest
1 голос
/ 04 апреля 2019

Я новичок в Python и пытаюсь выяснить, как лучше организовать мой код. Я планирую добавить несколько классов в свои файлы, и я хотел бы сослаться на классы без указания имени файла. Например, допустим, у меня есть такая структура:

my_project/
└── module1/
    ├── A.py
    └── B.py

A.py

class A:
    def foo(self):
        raise NotImplementedError

B.py

class B:
    def foo(self):
        raise NotImplementedError

Теперь предположим, что я хочу сослаться на класс A в B.py. Как сделать так, чтобы B.py выглядел так:

import A
class B:
    def foo(self):
        return A()

и не так:

from a import A
class B:
    def foo(self):
        return A()

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

1 Ответ

1 голос
/ 04 апреля 2019

Прежде всего, вам нужно исправить синтаксис класса, ваши классы должны быть

class A:
    def foo(self):
        raise NotImplementedError

и

from a import A

class B:
    def foo(self):
        return A()

Теперь причина, по которой вам нужно сделать from a import A, а не import A, заключается в том, что A - это класс, который находится в файле Python .py, и вам нужно сообщить интерпретатору, где определен класс A, иначе интерпретатор не знает где найти A

...