Python 将方法(sep文件)导入在_init___; py.py中定义的类的干净方法
我可以通过显式定义端点的方式从方法中调用对象。此REST API实际上是RESTful端点的集合: 即: 这将是模块symphony的_init___u;.pyPython 将方法(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
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__)