본문 바로가기
Python

Python의 객체 지향

by 복제비 2022. 7. 4.

Python의  객체 지향

 

객체들을 설계하여 문제를 해결하는 프로그램을 객체 지향 프로그램 이라고하며, C++, JAVA 등과 같이 파이썬도 객체지향 프로그래밍 언어에 속합니다.

 

파이썬 클래스(Class)

파이썬에서는  class 라는 예약어를 사용하여 객체를 정의하고, 파이썬은  모든 것객체로 취급합니다.
파이썬 언어에 정의된 클래스인 int, float, str, list, tuple, dict, set 등도 모두 클래스입니다.

이러한 파이썬 클래스속성기능으로 구성됩니다.

한번 만들어진 파이썬 객체는 다양한 프로그램에서 재사용될 수 있으며 소프트웨어의 생산성을 높일 수 있습니다.

dir( )함수 : 클래스의 속성과 기능을 알아보는 함수임

int 클래스의 속성과 기능을 알아보기 위해서 dir( )함수를 사용하여 실습을 진행합니다.

 

파이썬 클래스 구조

클래스를 먼저 정의해야 인스턴스인 객체를 생성할 수 있습니다.

 

파이썬 클래스 정의 방법
class  클래스명: 
            변수1

            변수2
            . . . . . . . . . .

def   메서드1(self, 매개변수1,...): 
           self.변수3
           self.변수4
           . . . . . . . . . .

def    메서드2(self,  매개변수2....): 
           . . . . . . . . . .

파이썬 클래스 내에는 클래스 멤버라고 불리는 변수와 메서드를 정의합니다.
변수1, 변수2는 클래스 변수이며 클래스를 통틀어서 각각 한 개씩 생성됩니다.
클래스 변수는 인스턴스를 통하지 않고 생성되며 모든 인스턴스가 공유합니다.
인스턴스 변수는 메서드 내에서 정의되며 self.변수명으로 나타냅니다.
메서드에서 인스턴스 변수를 사용하려면 메서드의 첫 번째 매개변수를 self 로 지정해 주어야 합니다.

 

파이썬 클래스의 구조는 다음과 같습니다.

파이썬 메서드와 속성

메서드와 속성 예제
class   Arithmetic :                                                                            # 클래스를 선언함

    def   arithmetic( self, a, b) :                                                       # 메서드를 선언함
            self.sum = a + b                                                                      # 객체 속성 변수 sum 에 합계를 저장함
            self.minus = a - b                                                                   # 객체 속성 변수 minus 에 차이값을 저장함
            self.multi = a * b                                                                    # 객체 속성 변수 multi 에 곱한 값을 저장함
            self.div = a / b                                                                         # 객체 속성 변수 div 에 나눈 값을 저장함
    def  result(self) :
            return  self.sum, self.minus, self.multi, self.div       # 객체 속성 값을 반환함

a = int(input("첫 번째 숫자를 입력 : = "))
첫 번째 숫자를 입력 : = 20
b = int(input("두 번째 숫자를 입력 : = "))
두 번째 숫자를 입력 : = 10

am = Arithmetic()                                                                              # 클래스로부터 객체를 생성함
am.arithmetic(a, b)                                                                          # 객체의 메서드를 호출함
a1,b1,c1,d1 = am.result()                                                               # 객체의 메서드를 호출하여 결과 값을 반환함

print('입력한  두 수의 합계 : = ', a1)
입력한  두 수의 합계 : =  30
print('입력한  두 수의 차이값 : = ', b1)
입력한  두 수의 차이값 : =  10
print('입력한  두 수의 곱한 값 : = ', c1)
입력한  두 수의 곱한 값 : =  200
print('입력한  두 수의 나눈 값 : = ', d1)
입력한  두 수의 나눈 값 : =  2.0

 

파이썬 생성자 메서드

생성자 메서드는 클래스로부터 객체가 생성될 때 자동으로 수행되는 특수한 메서드를 의미합니다.
생성자 메서드는 __init__( ) 메서드로 나타내며 객체생성될 때 초기화 역할을 수행하는데 사용합니다.

 

생성자 메서드 예제
class  ArithMetic :                                                                            # 클래스를 선언함

    def  __init__(self, x, y) :                                                             # 생성자 메서드를 선언함
           self.sum = x + y                                                                      # 객체 속성 변수 sum 에 합계를 저장함
           self.minus = x - y                                                                   # 객체 속성 변수 minus 에 차이값을 저장함
           self.multi = x * y                                                                     # 객체 속성 변수 multi 에 곱한 값을 저장함
           self.div = x / y                                                                          # 객체 속성 변수 div 에 나눈 값을 저장함
    def   result(self) :
           return  self.sum, self.minus, self.multi, self.div        # 객체 속성 값을 반환함

x = int(input("첫 번째 숫자를 입력 : = "))
첫 번째 숫자를 입력 : = 30
y = int(input("두 번째 숫자를 입력 : = "))
두 번째 숫자를 입력 : = 10

am = ArithMetic(x, y)                       # 클래스로부터 객체를 생성함. 생성자 메서드가 실행되고 매개 변수로 값을 전달함

a1,b1,c1,d1 = am.result( )              # 객체의 메서드를 호출하여 결과 값을 반환함

print('입력한  두 수의 합계 : = ', a1)
입력한  두 수의 합계 : =  40
print('입력한  두 수의 차이값 : = ', b1)
입력한  두 수의 차이값 : =  20
print('입력한  두 수의 곱한 값 : = ', c1)
입력한  두 수의 곱한 값 : =  300
print('입력한  두 수의 나눈 값 : = ', d1)
입력한  두 수의 나눈 값 : =  3.0

클래스에 생성된 객체를 소멸시키는 소멸자 함수__del__( ) 을 사용합니다.

 

파이썬 클래스의 인스턴스

클래스의 인스턴스를 생성하는 방법
인스턴스명=클래스명( )

이러한 형식으로 하나의 클래스에 대해 여러 개의 인스턴스를 생성하는 것이 가능합니다.

그러므로, 클래스로부터 만들어지는 각각의 객체를 그 클래스의 인스턴스(instance)라고 부릅니다.

파이썬 클래스 변수와 인스턴스 변수

파이썬 클래스 변수는 모든 인스턴스가 공유하는 변수이고, 파이썬 인스턴스 변수는 각각의 인스턴스가 독자적으로 사용하는 변수를 의미합니다.

클래스 변수는 인스턴스 변수처럼 각 인스턴스마다 생성되는 것이 아니고 하나의 클래스에 하나만 만들어지는 변수를 의미합니다.

인스턴스 변수는 인스턴스가 생성되어야 사용할 수 있지만 클래스 변수는 인스턴스를 생성하지 않아도 사용할 수 있습니다.

 

'Python' 카테고리의 다른 글

Python 예외 처리  (0) 2022.07.03
Python 파일 입출력  (0) 2022.07.02
Python 사전(dictionary) 자료형  (0) 2022.07.01
Python 집합(set)  (0) 2022.06.30
Python 튜플  (0) 2022.06.29

댓글