5장 - 클래스

Kiyong Lee·2021년 4월 17일
0

파이썬

목록 보기
11/21

클래스와 객체

클래스란? 똑같은 무엇인가를 계속해서 만들어 낼 수 있는 설계 도면
객체란? 클래스를 이용해 만든 것을 뜻한다
인스턴스란? 객체안에 대입하는 것
EX. a=cookie()라고 하면, a=객체, cookie()=인스턴스

클래스로 만든 객체는, 각기 고유한 성격을 가지며 서로 영향을 주지 않는다

사칙연산 클래스 만들기

클래스를 어떻게 만들지 먼저 구성하기

사칙연산을 가능하게 하는 FourCal 클래스가 다음처럼 동작한다고 가정해보자
a=FourCal()

그런 다음, a.setdata(4,2)처럼 입력해서 숫자 4와 2를 a에 지정해준다
a.setdata(4,2)

a.add()를 수행하면 두 수의 합을 돌려준다
print(a.add())
=> 6

a.mul()을 수행하면 두 수의 곱을 돌려준다
print(a.mul())
=> 8

a.sub()를 수행하면 두 수의 차를 돌려준다
print(a.sub())
=> 2

a.div()를 수행하면 두 수의 나누기를 돌려준다
print(a.div())
=> 2

이렇게 만드는 것이 목표다

클래스 구조 만들기

일단 FourCal이라는 class를 만든다
class FourCal :
pass

  • pass는 임시코드를 작성할 때 자주 사용

객체에 숫자 지정할 수 있게 만들기

일단 객체는 아무기능이 없다
그래서 객체 내용을 채워줘야 한다

class FourCal :
def setdata(self,first,second) :
self.first = first
self.second = second

분명 setdata에는 숫자 두 개를 인수로 받을 건데, 왜 3개가 있지? 라고 생각이 들것이다
나도 그랬거든;

근데 문구를 보면 함수안에 self.first로 시작하는 거 보니 아 객체를 뜻 하는 구나를 알 수 있다

파이썬만의 고유 특징이라 사용해도 되는데, 헷갈리면 굳이 사용 안 해도 된다

더하기 기능 만들기

add()를 만들어야 하는데, class 내에서 만들어준다

class FourCal :
def setdata(self,first,second) :
self.first = first
self.second = second

def add(self) :
result = self.first + self.second
return result

a = FourCal()
a.setdata(4,2)
b=a.add()
print(b)

곱하기 만들기

class FourCal :
def setdata(self,first,second) :
self.first = first
self.second = second

def add(self) :
result = self.first + self.second
return result

def mul(x) :
result = x.first * x.second
return result

a = FourCal()
a.setdata(4,2)
b=a.add()
c=a.mul()
print(c)

생성자(Constructor)

초기값을 설정할 때, setdata()같은 함수보다 생성자를 사용하는 게 더 안정적이다

init 이라고 사용한 뒤 파라미터를 설정해주면 된다

생성자를 선언해주면 객체 선언 할 때 인수를 넣어줘야 한다

상속

상속을 할 때, 클래스 선언 후 ()안에 상속할 클래스를 넣어주면 된다

class moreFourCal(Fourcal) :

이렇게

JAVA에서는 extend? 였던 거 같은 데 파이썬은 되게 단순하게 이루어져 있다

상속을 받았기 때문에 이전 클래스의 기능을 다 사용할 수 있다

상속을 왜 할까?

상속은 기존 클래스를 변경하지 않고, 기능을 추가하거나, 기존 기능을 변경할 때 사용한다

그럼 수정하면되지 왜 상속을 사용하냐?
-> 기존 클래스가 라이브러리 형태로 제공되거나 수정이 허용되지 않는 경우가 있기 때문

메서드 오버라이딩

클래스 내의 함수를 바꾸고 싶을 때, 상속받은 클래스에서 동일한 이름의 함수를 재정의하는 걸 오버라이딩이라고 한다

오버라이딩을 하면, 부모클래스의 메서드가 아닌 오버라이딩 된 메서드대로 프로그램이 이루어진다

클래스 변수

말 그대로 클래스를 만들고 맨 처음 선언하는 변수를 클래스 변수라고 한다.

클래스 변수는 모든 객체에 공유된다

profile
ISTJ인 K-개발자

0개의 댓글