본문 바로가기
프로그래밍/Python

Python - Class

by 왕거 2020. 7. 23.

파이썬도 당연하겠지만 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