Summary
- 클래스는 객체를 표현하기 위한 문법으로, 속성(데이터)과 메서드(동작)로 구성된다
__init__(self)에서 클래스 내부에서 쓸 변수를 설정하며,self는 인스턴스 자신을 가리킨다- 상속으로 부모 클래스의 변수·메서드를 물려받고, 오버라이딩으로 재정의할 수 있다
클래스란
클래스는 객체(object)를 표현하기 위한 문법이다. list, dict 등도 모두 각자의 용도에 맞게 만들어진 클래스다. 클래스는 크게 속성과 메서드로 구분되는데, 속성은 사용할 값을 정의하고 메서드는 그 속성으로 어떤 동작을 하는 실행 코드다.
게임의 직업에 비유하면, 각 직업(전사·마법사)이 클래스이고 그 안의 힘·민첩 같은 값이 속성, 찌르기·파이어볼 같은 동작이 메서드다.
생성
클래스 이름 규칙
- 대문자로 시작한다
- 단어와 단어 사이 연결도 대문자로 한다 (예:
FourCalculation)
클래스 내부에서 쓸 변수를 설정하려면 __init__(self)를 활용한다. self는 해당 클래스에서 사용되는 인스턴스 자신을 가리킨다. 아래 예시는 first, second를 입력받아 사칙연산 메서드를 제공한다.
class FourCalculation:
"""A class for four arithmetic calculation"""
def __init__(self, first, second):
self.first = first
self.second = second
if second == 0:
raise ValueError('the number must NOT be zero')
def add(self):
return self.first + self.second
def mul(self):
return self.first * self.second
def sub(self):
return self.first - self.second
def div(self):
return self.first / self.second사용
.py 파일에서 클래스를 임포트하고, 객체에 값을 입력한 뒤 메서드로 계산한다.
from fourcalculation import FourCalculation
b = FourCalculation(19, 8)
print(b.add(), b.mul(), b.sub(), b.div())상속
SuperClass와 SubClass
- SuperClass: 부모 클래스
- SubClass: 자식 클래스. 부모 클래스를 상속받아 그 변수·메서드를 사용하며, 확장·구체화할 때 쓴다
부모 클래스를 상속하면 그 변수·메서드를 모두 물려받으며, 필요하면 오버라이딩(overriding)으로 재정의한다. super().__init__(...)로 부모의 변수를 활용하고, 새 변수는 따로 설정한다.
from fourcalculation import FourCalculation
class FiveCalculation(FourCalculation):
"""Adding power calculation"""
def __init__(self, first, second, third):
super().__init__(first, second)
self.third = third
def pow(self):
return self.first ** self.second + self.third
def div(self): # Method overriding
if self.second == 0:
return 0
else:
return self.first / self.secondc = FiveCalculation(4, 2, 3)
print(c.pow(), c.add(), c.sub())부모의 메서드도 상속받아 자식에서 호출할 수 있다. 아래 Employee는 Person의 Name()을 상속받아 GetEmployee() 안에서 사용한다.
class Person:
def __init__(self, first, last):
self.firstname = first
self.lastname = last
def Name(self):
return self.firstname + " " + self.lastname
class Employee(Person):
def __init__(self, first, last, staffnum):
Person.__init__(self, first, last)
self.staffnumber = staffnum
def GetEmployee(self):
return self.Name() + "," + self.staffnumberReference