Ich kann Objekte aus einer Methode auf eine Weise aufrufen, die explizit einen Endpunkt definiert (diese REST-API ist wirklich eine Sammlung von RESTful-Endpunkten):Clean-Methode zum Importieren von Methoden (sep-Dateien) in eine Klasse definiert in __init__.py
dh:
import symphony
pod_object = symphony.Pod(self.__uri__, self.__session__, self.__keymngr__)
agent_object = symphony.Agent(self.__uri__, self.__session__, self.__keymngr__)
agent.userid_by_email(email)
pod.send_message(userid, message)
Dies würde
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
Dies wäre die __init__.py
für eine Klasse Po der __init__.py
für eine Modul Symphonie sein d in Modul Symphonie
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__)
Ich habe so etwas. Und ich mag das wirklich .. Weil ich dann viele Klassen haben kann, die in Dir-Strukturen aufgeteilt sind, mit vielen Methoden, die in viele Dateien unterteilt sind. Säubere einfachen Code. Alle registrieren sich später auf einem Modul.
Aber ich muss Methoden einzeln registrieren, anstatt die gesamte Datei.
Gibt es eine Möglichkeit, alle Methoden in den Dateien sauber zu importieren?
Python2/3 kompatiblen Weg?
Gute Trauer. Nein, das ist nicht sauber und einfach in meinem Buch, tut mir leid. Alle diese Namen, die Sie importieren, müssen als erstes Argument "self" haben und außerhalb eines Klassenkontexts liegen, was für andere Python-Entwickler, die zu dem Projekt kommen, nett und verwirrend sein wird. Warum nicht nur die Erbschaft? –
nicht wirklich ... Sie importieren es in das Basismodul und es wird so einfach wie die Instanziierung des Moduls und Zugriff auf alle Methoden direkt aus dem Modul. zB: von .Pod importieren Pod in __init__.py für Modul. –
Sie könnten das Klassenwörterbuch mit (einer leicht gefilterten Version) der Modulwörterbücher "aktualisieren"? Aber ehrlich gesagt sieht die ganze Sache für mich schrecklich aus. – DavidW