본문 바로가기
  • hazard_dev@__
  • hazard_dev@__
Python

파이썬_객체지향(class,module)[3]

by Hazard3_o00sung 2020. 2. 20.
728x90

본 포스트는 python3.7을 기준으로 작성되었음을 알려드립니다.

 

파이썬_객체지향(class,module)[3]

포스팅을 하기 전 문득 이 생각이 들었습니다. 객체지향과 절차지향, 필자는 계속해서 c와 python 두개의 언어를 사용하고 있지만, 사실 두 언어는 큰 차이점이 없습니다. 물론 이렇게 생각할 수 있습니다. c는 포인터변수도 있고~ 메모리 관리도 해줘야되고 개발자가 직접 이래라 저래라 다해야되고 파이썬은 가상환경이라 다해주는거 아니냐?!!! 맞는말입니다. 하지만 python의 심화부분으로 들어가면 c와 마찬가지로 최적화 문제에 결국은 부딪히게 됩니다. 필자가 python으로 이미지프로세싱 관련 프로그램을 개인적으로 제작할 때에 사실 최적화가 똥망이라 ioexception, overflow를 겪게 되었습니다. 물론 개발한 경력이 얼마 안되기 때문에 아마추어적 실수를 범했지만, 제 블로그에 들어오시는 분들은 반드시 그런 실수도 피해가셨음 하는 바람입니다. 드리고 싶은 말은 python또한 메모리관리를 직접 해줄 수 있는 방법이 존재합니다. 그런 루틴을 통해서 일정 패턴으로 프로르램을 작성해야 좋은 프로그램이 완성될 수 있는것이겠죠 . 결국 큰 차이는 없습니다. 입문할때 어떤 언어가 좋아요~ html이 조금 가볍게 할 수 있지 않나요~ 그래도 c가 언어의 정수인데~ 우리나라에서 돈 벌려면 java지~ 뭐든 좋으나 본인이 어떤 언어를 하던, 결국 생각했던건 다하게 되있으니 흥미를 붙이는게 조금 더 중요할 것이라고 생각이 드는 바네요.

 

네 헛소리 집어치우고 포스팅 해보겠습니다 ㅋㅋ

 

 

저번 포스트 까지 super, hash 등 클래스에서 사용될 수 있는 클래스의 성질에 대해서 포스팅을 했습니다. 만약 못 보셨다면, 오른쪽이나 상단 python 클릭하셔서 확인해보시면 좋을 것 같습니다. 

 

이번 시간엔 클래스의 전체적 예제를 살펴보겠습니다. 보여드리고 싶은건 너무 많지만 많아봤자 그닥 도움안되요 하나하나 차근차근! 포스팅 이어 갈테니 도움되신다면 블로그를 즐겨찾기 두시고 들어오셔서 시간될때 보시면 될것 같습니다!

 

우선 예제코드를 살펴 보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class Father(object):
    def __init__(self, a=0,b=0,c=0):
        self.a = a;self.b=b;self.c = c
 
    def add(self):
        self.c = self.a + self.b
        return print(self.c)
 
    def __eq__(self, other):
            if isinstance(self, other.__class__):
                return self.c == other.c
            else:
                NotImplemented
 
 
class Son(Father):
    def __init__(self,a=0,b=0,c=0):
        super().__init__(a,b,c)
 
    def sum(self):
        return print(self.a+self.b+self.c)
 
= Father()
 
 
cs

앞서 배운 내용을 짬뽕을 했습니다 ㅋㅋ.. 뭐 보시면 기능이랄건 없는 코드입니다. 본 클래스는 사용자 정의 클래스가 됩니다. 그렇기 때문에 하나의 모듈이 되었다고 생각하시면 됩니다.  자식클래스에선 부모클래스를 상속받는 형태이고 자식클래스에선 오버라이드된 함수를 super()가 호출하고 있습니다. 또한 한가지 팁을 드리면 사용자 정의 클래스를 만들다보면 자주 이런 에러가 발생합니다.

 

missing 1 required positional argument: 'self'

 

뭐 요놈으로 말할거 같으면 그냥 간단하게 만든 클래스 인스턴스화 시켜줘란 말입니다. 그래서 코드 맨 마지막 부분에 인스턴스화를 시켜주며 끝마쳤습니다. 

사용을 위해서라면 아래와 같이 사용자환경에서

1
2
3
4
5
6
7
import my_Father
 
= my_Father.Father(2,3,5)
f.add()
 
 
 
cs

위와 같이 다른 사용자환경에서 임포트모듈해서 재사용이 가능합니다.

 

 

잡담이 너무 길었던 것 같지만, 한번 읽어보시는것도...ㅎ.ㅎㅎㅎ.ㅎ.ㅎ.ㅎ.ㅎ

 

 

여튼 다음 포스트에서는 패턴에 대해서 포스팅 하도록 하겠습니다. 감사합니다!

 

 

댓글/피드백 환영합니다.

 

728x90

댓글