如果有一个名为mattermost的django应用程序,它有一个称为Channel的模型,我们可以做这样的事情。
import mattermost
for channel in Channel.objects.all():
print(channel)
我希望能够做一些类似的事情
import mattermost
mattermost.channels.list
我尝试在mattermost/init.py.的同一文件夹中添加带有def-list((:函数的channels.py
我得到以下错误。
In [7]: reload(mattermost)
Out[7]: <module 'mattermost' from '/home/csmu/mipgen-django/mattermost/__init__.py'>
In [8]: mattermost.channels.list
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-8-d4715777f4f1> in <module>()
----> 1 mattermost.channels.list
AttributeError: module 'mattermost' has no attribute 'channels'
如何为django应用程序python模块添加属性?
channels.py:的内容
import mattermost
def list():
for channel in mattermost.models.Channel.objects.all():
print(channel)
尝试
from mattermost import channels
print(channels.list())
这导致:
In [1]: import mattermost
In [2]: mattermost.channels.list()
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-2-249466f32547> in <module>()
----> 1 mattermost.channels.list()
AttributeError: module 'mattermost' has no attribute 'channels'
In [3]: from mattermost import channels
In [4]: mattermost.channels.list()
list.stub
In [5]:
这是接近的。
我发现您可以通过将以下内容添加到mattermost/__init__py 来实现这一点
#!/usr/bin/env python
import os, pkgutil
__all__ = list(module for _, module, _ in
pkgutil.iter_modules([os.path.dirname(__file__)]))
则以下工作
import mattermost
from mattermost import *
mattermost.channels.list()
其产生每个最重要信道的输出。