2016-08-13 4 views
0

텍스트 파일 입력에서 파생 클래스를 초기화하려고합니다.python 클래스 메서드를 사용하여 클래스 및 기본 클래스를 초기화하십시오.

file.txt를을 : 내가 뭘하려고 오전의 간단한 예를

1 
2 

main.py :

class Base: 
    def __init__(self, val1): 
     self.val1 = val1 
    def input_from_text(cls, init_deque): 
     #return cls(init_deque.popleft()) 

class Derived(Base): 
    def __init__(self, val1, val2): 
     Base.__init__(self, val1) 
     self.val2 = val2 
    def input_from_text(cls, init_deque): 
     #initialize base and derived here and return derived 

def main(argv=None): 
    initialized_derived = Derived.input_from_text(deque(open("file.txt"))) 
    assert initialized_derived.val1 is 1 
    assert initialized_derived.val2 is 2 

이 작업을 수행 할 수있는 좋은 방법이 있나요? 기본적으로 당신이와 C++에서 찾을 것이다 것과 유사한 무언가를 찾고 :

//calls operator>>(Base) then operator>>(Derived) 
cin >> initialized_derived; 

각 클래스가 잘 캡슐화되어이 방법과베이스/파생 클래스는 서로에 대해 아무것도 (제외를 알 필요하지 않습니다 알고있는 __init__ 인수의 수는 걸립니다).

답변

1

나는 이것이 잘못된 길로 가고 있다는 것을 깨달았습니다. 간단한 수정은 다음과 같이하면됩니다 :

class Base: 
    def __init__(self): 
     pass 
    def input_from_text(self, init_deque): 
     self.val1 = init_deque.popleft() 

class Derived(Base): 
    def __init__(self): 
     Base.__init__(self) 
    def input_from_text(self, init_deque): 
     Base.input_from_text(self, init_deque) 
     self.val2 = init_deque.popleft() 
관련 문제