파이썬도 당연하겠지만 Class를 사용할 수 있다.
관련된 내용을 정리해보자.
클래스 정의 예제
class Calculator:
def __init__(self, id): #생성자
self.id = id #클래스 attribute(속성)
def plus(self, num1, num2): #이하 클래스 method(메소드)
return num1 + num2
def minus(self, num1, num2):
return num1 - num2
def div(self, num1, num2):
if num2 != 0:
return num1 / num2
def check(self):
return self.id
- 파이썬에서 클래스를 사용할 때는 주의할 점이 몇개있다.
- 클래스 이름은 첫문자를 대문자로 할 것
- 따르지 않았을 때 문법레벨에서 에러를 출력하지는 않는다.
- 그냥 불문율 같은 느낌이라고 이해하자.
- 클래스 내부의 요소(속성, 메소드등)를 사용할 때에는 self를 꼭 사용해야 한다.
- 이건 따르지 않으면 문법 에러 발생함
- 각 메소드들에도 self를 인자로 꼭 정의해주어야 한다.
- 인자를 필요로 하지 않는 메소드의 경우에도 필수!
- 위 코드의 check 메소드 부분
- 클래스 이름은 첫문자를 대문자로 할 것
- 일단 예제 코드에서는 간단한 계산기 클래스를 만들었는데, 생성자를 실습해보기위해서 일부러 id라는 속성을 부여했다.
- 파이썬 클래스의 생성자는 __init__ 메소드를 사용한다.
- 이후 방법은 다른 언어들과 별로 다를게 없다.
클래스의 사용
cal1 = Calculator(1) #클래스 객체 선언
print(cal1.id)
print(cal1.check())
print(cal1.plus(10, 12))
print(cal1.minus(10, 8))
print(cal1.div(10, 2))
#############################
#실행 결과
1 #id 속성 출력 결과
1 #check 메소드 실행 결과
22 #plaus 메소드 실행 결과
2 #minus 메소드 실행 결과
5.0 #div 메소드 실행 결과
- 클래스 객체는 간단하게 선언할 수 있다.
- 객체 이름 = 클래스 이름(생성자 데이터들)
- 위 예제에선 id값을 받는 생성자를 클래스에 정의했으므로 1을 넣어 선언했다.
- 클래스 메소드를 사용하기 위해서는 선언한 클래스 객체에 <.>를 사용해서 접근할 수 있다. 이는 속성도 동일함
- 객체 이름 + <.> + 메소드 이름 또는 속성
- 메소드가 인자를 필요로 한다면 함수 쓰듯이 사용
self?
- 인스턴스(instance)를 가르키는 키워드
- 인스턴스의 개념은 여타 언어들과 같아보인다.
- 예로들면 자바의 this 같은?
- 정의한 클래스로 선언한 객체를 인스턴스라고 보는 것 같음
- 사실 클래스라는 범위에 국한할 필요는 없는 개념이다.
- 객체 == 인스턴스 라고 이해하면 편할 듯
- 인스턴스의 개념은 여타 언어들과 같아보인다.
- 위의 예제에 적용해보면 cal1 객체가 Calculator 클래스의 인스턴스이다.
- 생성자 인수에 self가 가장 먼저 위치해야 하는데 이를 잘 설명한 이미지가 있어 추가
- 위 사진의 클래스의 생성자는 3개의 속성을 받도록 정의되었다.
- 마음편하게 생성자와 메소드를 사용할 때에는 self를 정의에 추가해야 된다고 생각하자.
'프로그래밍 > Python' 카테고리의 다른 글
Django - 로깅 (0) | 2021.09.11 |
---|---|
Conda 기본 (0) | 2020.07.29 |
Python - range와 scope (0) | 2020.07.22 |
Python - Decorator (0) | 2020.07.22 |
Django 기본 (0) | 2020.07.07 |