在包中生成顶级函数

2024-09-27 23:20:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python2.7制作一个包,旨在以有限的容量替换PyCLIPS

该软件包使用顶级功能,因此可以更直接地访问CLIPS专家系统。运行from clips import *意味着像Assert()这样的函数将在专家系统中断言一个事实,可以从顶层使用

我需要重新创建它,这样我就可以在一些遗留代码中简单地用from PyCLIPS2 import *替换from clips 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中为我希望顶级访问的每个函数或方法编写其中一个函数。如果有任何变化,我也必须保持更新

我相信有一种更好的方法可以做到这一点,希望不需要我编写并维护这些函数。如果有人对从顶层访问这些函数有任何建议,这些建议更具python风格,或者导致更清晰的名称空间,或者只是不那么可怕,我真的很想听听:)(或者,可以为我编写这些函数的东西也会帮上很大的忙)谢谢


Tags: 方法函数frompyimportobjectinitmain

热门问题