代码之家  ›  专栏  ›  技术社区  ›  Rob

Python导入类在另一个类中用作嵌套/内部类

  •  0
  • Rob  · 技术社区  · 7 年前

    Python版本:

    Python 3.6
    

    我有这门课:

    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)
    

    但我想将嵌套类移动到它们自己的模块中并导入它们,但我不知道如何做到这一点。这是我基于一些类似堆栈溢出问题的最新尝试。很明显,它不起作用:

    from Models.Create import Create
    
    class Backup(Create):
    

    是否有人知道如何实现我的目标,这样我仍然可以调用类中的方法,如下所示: Backup.Create.all()

    1 回复  |  直到 7 年前
        1
  •  2
  •   Brett Beatty    7 年前

    一种方法是将内部类导入到外部类中。

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

    如果这样做,我会将它们全部导入到“Models”包的\uu init\uuuu中。py,所以你可以这样做:

    class Backup:
        from Models import Create, Delete, Restore
    

    如果要在其他地方导入它们,另一种选择就是在类中分配它们。

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