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 |
댓글