2017-12-13 23 views
0

파이썬 버전을 중첩 된/내부 클래스를 사용하는대한 파이썬 클래스는 다른 클래스에

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) 

을하지만 자신의 모듈에 중첩 된 클래스를 이동하려면 가져 오지 만 어떻게해야할지 모르겠다. 여기에 몇 가지 유사한 스택 오버플로 질문을 기반으로 최근 시도했다. 분명히 작동하지 않았다 : 그것은 것 할 Backup.Create.all()

+0

확인'슈퍼()'기능 : https://stackoverflow.com/questions/576169/understanding-python-super-with-init-methods –

+0

모습에도 불구하고, 나는 그가 찾고 생각하지 않습니다 모든 기능을 확장하십시오. 그는 그들을 중첩 시키려하고있다. –

답변

2

한 가지 방법 :

from Models.Create import Create 

class Backup(Create): 

사람이 내가 그렇게 난 여전히 같은 클래스의 메소드를 호출 할 수있는 일을하려고하고 무엇을 달성하는 방법을 알고 있나요 바깥 쪽의 내부 클래스를 임포트하는 것이다.

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

이 방법으로 그것을 할 경우, 당신은 그냥이 작업을 수행 할 수 있도록, 나는 '모델'패키지의 __init__.py에 그들 모두를 가져올 것 :

class Backup: 
    from Models import Create, Delete, Restore 

또 다른 옵션을 가져 오는 경우 그 (것)들은 다른 곳에 다만 종류 안에 그 (것)들을 할당하고있다.

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

__init__.py로 가져 오는 것은 무엇을 의미합니까? 모범이 있습니까? – robertmylne

+0

Models 디렉토리에 \ __ init__.py라는 Models 패키지가 있다고 가정합니다. 이 파일에서 패키지의 모듈 (예 : 생성, 삭제, 복원)에서 클래스를 가져 오는 경우 모듈이 아닌 패키지에서 모듈을 참조 할 수 있습니다. 예를 들자면 요청 (https://github.com/requests/requests/blob/master/requests/__init__.py#L116)을 볼 수 있습니다. 요청 세션을 만들 때 requests.Sessions.Session 대신 requests.Session을 가져옵니다. –