2017-12-13 3 views
0

Python-Version verwendetPython Import-Klasse als verschachtelte/innere Klasse in einer anderen Klasse

class Backup: 
    class Create: 
     @staticmethod 
     def all(): 
      print('create all') 

     @staticmethod 
     def user(username): 
      print('create user: ' + username) 

     @staticmethod 
     def file(filename): 
      print('create file: ' + filename) 

    class Restore: 
     @staticmethod 
     def all(): 
      print('restore all') 

     @staticmethod 
     def user(username): 
      print('restore user: ' + username) 

     @staticmethod 
     def file(filename): 
      print('restore file: ' + filename) 

    class Delete: 
     @staticmethod 
     def all(): 
      print('delete all') 

     @staticmethod 
     def user(username): 
      print('delete user: ' + username) 

     @staticmethod 
     def file(filename): 
      print('delete file: ' + filename) 

Aber ich will die verschachtelten Klassen, um ihre eigenen Module bewegen und importiere sie, aber ich bin mir nicht sicher, wie ich das machen soll. Hier war mein letzter Versuch basierend auf einigen ähnlichen Stack-Überlauf-Fragen. Offensichtlich hat es nicht funktioniert:

from Models.Create import Create 

class Backup(Create): 

Wer weiß, wie zu erreichen, was ich versuche, so zu tun, ich kann immer noch die Methoden in den Klassen wie folgt aufrufen: Backup.Create.all()

+0

Überprüfen Sie die 'super()' Funktionen: https://stackoverflow.com/questions/576169/understanding-python-super-with-init-methods –

+0

Obwohl es so aussieht, ich glaube nicht, er schaut zu Erweitern Sie alle Funktionen. Er versucht sie zu nisten. –

Antwort

2

Eine Möglichkeit wäre es zu tun sein, die inneren Klassen innerhalb der äußeren zu importieren.

class Backup: 
    from Models.Create import Create 
    from Models.Delete import Delete 
    from Models.Restore import Restore 

Wenn Sie es auf diese Weise tun, würde ich sie alle in die ‚Models‘ importieren Pakets __init__.py, so dass Sie nur dies tun könnte:

class Backup: 
    from Models import Create, Delete, Restore 

Eine weitere Option, wenn Sie importieren anderswo werden sie nur innerhalb der Klasse zugewiesen.

class Backup: 
    Create = Models.Create.Create 
    Delete = Models.Delete.Delete 
    Restore = Models.Restore.Restore 
+0

Was meinen Sie importieren sie in die __init__.py? Hast du ein Beispiel? – robertmylne

+0

Ich gehe davon aus, dass Ihr Models-Verzeichnis ein \ __ init__.py hat, damit das Models-Paket funktioniert. Wenn Sie in dieser Datei Klassen aus den Modulen dieses Pakets importieren (z. B. Erstellen, Löschen, Wiederherstellen), können Sie sie aus dem Paket und nicht aus dem Modul referenzieren. Soweit es Beispiele gibt, können Sie sich Anfragen ansehen (https://github.com/requests/requests/blob/master/requests/__init__.py#L116). Wenn Sie eine Anforderungssitzung erstellen, importiert sie requests.Session anstelle von requests.sessions.Session. –

Verwandte Themen