Создание функций верхнего уровня в пакете - PullRequest
0 голосов
/ 08 ноября 2019

Я делаю пакет в Python 2.7, предназначенный для замены PyCLIPS в ограниченном объеме.

Этот пакет использует функции верхнего уровня, чтобы к экспертной системе CLIPS можно было получить более прямой доступ. Запуск from clips import * означает, что такие функции, как Assert(), которые будут утверждать факт в экспертной системе, могут использоваться с верхнего уровня.

Мне нужно пересоздать это, чтобы я мог просто заменить from clips import *с from PyCLIPS2 import * в каком-то устаревшем коде и, надеюсь, больше ничего не изменить.

В настоящее время структура моего пакета выглядит следующим образом:

PyCLIPS2
├── __init__.py [1]
├── system
|   ├── __init__.py [2]
|   └── main.py
└── tests
    ├── __init__.py [3]
    └── test_all.py

Внутри __init__.py [1] У меня сейчас

from system import *

_main_object = Main()

def Assert(assertion):
    return _main_object.Facts.Assert(assertion)

Это позволяет мне делать то, что я хочу. Это означает, что когда я импортирую пакет, он инициализирует экземпляр Main() и привязывает функции верхнего уровня к соответствующим функциям / методам внутри него.

Проблема в том, что этих функций много /методы. Если я продолжу в том же духе, мне придется написать одну из этих функций внутри __init__.py для каждой функции или метода, к которому я хочу получить доступ на высшем уровне. Я также собираюсь держать их в курсе, если что-то изменится.

Я уверен, что есть гораздо лучший способ сделать это, который, надеюсь, не требует, чтобы я записывал каждую из этих функций и поддерживал их. Если у кого-то есть какие-либо предложения по получению доступа к этим функциям с верхнего уровня, который является более питоническим или приводит к более ясному пространству имен или просто менее ужасен, я действительно хотел бы услышать их :) (альтернативно, что-то, что может написать эти функции длямне бы тоже очень помогли) Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...