Python 将方法(sep文件)导入在_init___; py.py中定义的类的干净方法

Python 将方法(sep文件)导入在_init___; py.py中定义的类的干净方法,python,Python,我可以通过显式定义端点的方式从方法中调用对象。此REST API实际上是RESTful端点的集合: 即: 这将是模块symphony的_init___u;.py from .Agent import Agent from .Auth import Auth from .Config import Config from .Crypt import Crypt from .Mml import Mml from .Pod import Pod from .RESTful import RESTfu

我可以通过显式定义端点的方式从方法中调用对象。此REST API实际上是RESTful端点的集合:

即:

这将是模块symphony的_init___u;.py

from .Agent import Agent
from .Auth import Auth
from .Config import Config
from .Crypt import Crypt
from .Mml import Mml
from .Pod import Pod
from .RESTful import RESTful
这将是symphony模块中类Pod的_init__uuuuuuuuuuu.py

class Pod():
    # basic methods
    from .base import sessioninfo
    # user methods
    from .users import get_userid_by_email
    from .users import get_user_id_by_user
    from .users import user_feature_update
    from .users import search_user
    # streams methods
    from .streams import adduser_to_stream
    from .streams import create_stream
    from .streams import create_stream_ni
    from .streams import create_room
    from .streams import update_room
    # group methods
    from .groups import ib_group_list
    from .groups import ib_group_member_list
    from .groups import ib_group_member_add
    from .groups import ib_group_policy_list
    # connection methods
    from .connections import list_connections
    from .connections import connection_status
    from .connections import accept_connection
    from .connections import create_connection

    def __init__(self, url, session, keymngr):
        self.__url__ = url
        self.__session__ = session
        self.__keymngr__ = keymngr
        self.__rest__ = symphony.RESTful(self.__url__, self.__session__, self.__keymngr__)
我有这样的东西。我真的很喜欢这个。。因为我可以将许多类划分为Dir结构,将许多方法划分为许多文件。干净简单的代码。所有的注册都将在稍后注册到一个模块

但是我必须单独注册方法,而不是整个文件

有什么方法可以干净地导入文件中的所有方法吗


Python2/3兼容方式?

也就是说,嗯,真的,啊,不是那么漂亮

如果您的类太大,无法放在一个文件中,那么它就是太大了,应该分为几个类

显而易见的解决方案是创建几个基类,一个用于用户方法,一个用于流方法,一个用于组方法等等。然后让你的Pod类从所有这些类继承


如果不了解您试图解决的问题,就不可能推荐一种不同的方法来设计您的类。不过,即使您确实从所有这些基类继承了Pod,您也会觉得自己做得不对。

好啊。不,对不起,在我的书中,这不干净也不简单。您导入的所有这些名称都需要将self作为第一个参数,并且不在类上下文中,这对于其他来到项目中的Python开发人员来说是很好的,并且会让他们感到困惑。为什么不只是继承呢?不是真的。。。您可以将它导入基本模块,这样就很容易实例化该模块并直接从该模块访问所有方法。ie:from.Pod导入init.py中模块tld的Pod。您可以使用稍微过滤过的模块字典版本更新类字典吗?但老实说,在我看来,这一切都是令人兴奋的。无论这是否是一种组织代码的好方法,请记住,它将打破0参数超级,因为用于实现0参数超级的奇怪编译器黑客依赖于类体中的词汇方法定义。基于Martijn上面所说的,Python的继承模型使得创建非常容易。IMO将上述内容打包到UserMixin、StreamsMixin、GroupMixin等中会更干净。这不是一个答案。实际上,将类拆分为不同的基并从所有基继承是一个答案。这会使类定义变得太长而不清晰。也许,也许不是,这仍然是一个答案,即使你不认为这是一个很好的。
class Pod():
    # basic methods
    from .base import sessioninfo
    # user methods
    from .users import get_userid_by_email
    from .users import get_user_id_by_user
    from .users import user_feature_update
    from .users import search_user
    # streams methods
    from .streams import adduser_to_stream
    from .streams import create_stream
    from .streams import create_stream_ni
    from .streams import create_room
    from .streams import update_room
    # group methods
    from .groups import ib_group_list
    from .groups import ib_group_member_list
    from .groups import ib_group_member_add
    from .groups import ib_group_policy_list
    # connection methods
    from .connections import list_connections
    from .connections import connection_status
    from .connections import accept_connection
    from .connections import create_connection

    def __init__(self, url, session, keymngr):
        self.__url__ = url
        self.__session__ = session
        self.__keymngr__ = keymngr
        self.__rest__ = symphony.RESTful(self.__url__, self.__session__, self.__keymngr__)