2011-05-13 3 views
0

텔넷/pexpect를 통해 센서에 로그인하고 데이터 수집기 ​​역할을하는 기능이 있습니다.오브젝트를 추상화하는 우아한 방법은 무엇입니까?

로그인하는 부분을 다시 작성하고 데이터를 가져 와서 관련 출력을 구문 분석 (pexpect)하고 싶지 않습니다. 그러나, 나는 내가해야 할 수도 있습니다,이 코드는 예를 들어

를 수집 데이터와 다른 일을 할 필요가로 : 첫 번째 읽기

  • 평균을 가지고 돌아올 때까지

    • 시간 센서 판독 값의 변화 횟수

    • 센서 (데이터 한 조각)를 반환하거나 센서 (별도의 데이터) 인 센서를 반환합니다. fr 옴 출력

    는 궁극적으로, 그것은 여전히 ​​로그인하여 출력을 동일하게 분석하고 그 부분에 대한 하나 개의 코드 블록을 사용하고자한다.

    코드에서 상위에 있으며, 즉각적으로 사용되고 있습니다. 내가 그것을 부를 때, 내가 수집 할 필요가있는 데이터의 종류가 무엇인지를 알고있다. 개체를 만드는 것은 너무 어색합니다.

    내 용도가 하나의 함수에 인수를 더 많이 추월했습니다.

    아이디어가 있으십니까?

  • +0

    파이썬에는 function, object, class, module이라는 몇 가지 글로벌 구문 만 있습니다. "개체를 구성하는 것은 너무 어색하다"고 생각하게 만드는 이유는 무엇입니까? – Malvolio

    +0

    기능적으로, 나는 그것을 메소드처럼 사용하고 한 번 방법을 한 번 실행해야합니다. 클래스를 인스턴스화하는 것은 지저분 해 보입니다. – eastydude5

    +1

    어쩌면 어떤 종류의 작성자 패턴을 사용할 수 있습니까? 'Sensor(). timeInitial(). calcAverage(). returnStatus(). go()' – Malvolio

    답변

    3

    이것은 일반적인 상황입니다. 나는 당신이 이미 다른 사람들이 한 일을하지 않은 것에 놀랐습니다.

    함수를 리팩터링하여 함수를 더 작은 함수로 분해합니다.

    함수는 객체이며 다른 함수에 인수로 전달 될 수 있습니다.

    def step1(): 
        whatever 
    
    def step2(): 
        whatever 
    
    def step2_alternative(): 
        whatever 
    
    def original(args): 
        step1() 
        step2() 
    
    def revised(args, step2_choice): 
        step1() 
        step2_choice() 
    

    이제이 작업을 수행 할 수 있습니다.

    revised(step2) 
    revised(step2_alternative) 
    

    함수 객체로 프로그래밍하는 것은 단지 OO입니다.

    +0

    +1은 캐주얼 한 알림을 위해 예, 심지어 기능이 객체입니다. – jathanism

    +0

    이것이 제가 한 일입니다. 고마워요. 기본적으로 나는 아주 간단한 하위 함수를 모두 망가 뜨리고 하위 함수가 상호 작용하는 순서/방법/순서의 모든 비즈니스 로직을 포함하는 공용 인터페이스 함수를 사용했습니다. 감사! – eastydude5

    0

    인수로 설명한 함수에 데이터 처리 함수를 전달할 수 있습니까?

    취향에 따라 다소 우아 할 수도 있습니다. (용서해주세요 : 나는 pexpect에 대해 아무것도 몰라, 나는 당신의 질문을 오해했을 수도 있습니다!)

    관련 문제