2016-08-04 1 views
1

데이터 파싱 기능이있는 클래스가 있습니다.가져 오기를 사용하여 클래스에 새 함수 추가

class DataContainer(object): 
    def parser1(data): 
     # Handle data in one way 
     self.parsed_data = parsed_data 

    def parser2(data): 
     # Handle data another way 
     self.parsed_data = parsed_data 

파서는 인기있는 클래스의 인스턴스 변수입니다. 이 파서는 변경되거나 많은 변화를, 그래서이 같은 다른 기능을 가진 파일, 뭔가 가져올 것이 될 수있다

class DataContainer(object): 
    import parsers # Contains all the parsing functions which can then be called from instances 

이 작업을 수행하는 특정 '파이썬'방법이 있나요를?

+0

사람들은 유효한 방법의 정의가 아닌 그 기능에 대한 인터페이스 역할을해야 다음 import parsers을 것, 그리고; 'self'라는 인자가 없습니다. – chepner

+0

이 코드는'NameErrors'로 가득 차서 실행되지 않습니다. 그러나 귀하의 질문에 대답하기 위해, 당신이하려고하는 것은 Pythonic이 아니기 때문에 아닙니다. 클래스가 아닌 다른 파일에서 메소드를 사용하는 것이 더 좋은 점은 무엇입니까? 이 문제는 어떤 문제를 해결합니까? 속성이없는 경우이 클래스도 왜입니까? – IanAuld

+1

왜 그들은 모두 같은 계층에 속해야합니까? 더 일반적인 방법은 파서 기본 클래스의 하위 클래스를 가지는 것입니다. – wim

답변

1

그것은 당신이 당신의 개체를 사용하여 정확히 원하는 방법에 따라 달라집니다,하지만 난 당신의 DataContainer이

import parsers 

class DataContainer(object): 

    def __init__(self): 
     # If this kind of thing is needed for the library 
     self.parsers = parsers.Parser() 

    def parser1(self,data): 
     # prep data however you need 
     parsed_data = self.parsers.parse_method1(prep_data) 
     # set instance variables from parsed_data 
+0

필자는 보통 원하는 특정 기능/클래스 만 가져옵니다. "from parsers import parser1, parser2" –

+0

이는 의미가 있습니다. 유일한 관심사는 parse_method가 인스턴스 변수에 액세스해야하기 때문에 이와 같습니다. 예를 들어 'DataContainer'클래스에 self.sorted_data_1, self.sorted_data_2, self.sorted_data_3 인스턴스 변수가있는 경우 파서는 원시 데이터의 모든 변수에 값을 할당해야합니다. 필자는해야 할 일은 필요한 클래스 변수를 출력하는 정적 메서드를 만들고 인스턴스 변수에 할당하는 것일 수 있다고 생각했습니다. – nven

관련 문제