클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

파이썬 날개 달기 2 - 클래스 2 : 생성자와 메서드 오버라이딩 본문

프로그래밍 언어/파이썬

파이썬 날개 달기 2 - 클래스 2 : 생성자와 메서드 오버라이딩

huenuri 2024. 9. 6. 23:00

아직 사칙연산 계산기를 만드는 프로그램이 끝나지 않았다. 이어서 다음 내용을 학습해본다.


 

 

 

 

생성자

 

FourCal 클래스의 인스턴스 a에 setdata 메서드를 수행하지 않고 add 메서드를 먼저 수행하면 오류가 발생한다. setdata 메서드를 수행해야 객체 a의 객체변수 first와 second가 생성되기 때문이다.

이렇게 객체에 first, second 같은 초기값을 설정해야 할 필요가 있을 때는 setdata와 같은 메서드를 호출하여 초기값을 설정하기보다 생성자를 구현하는 것이 안전한 방법이다.

 


 

 

생성자란 객체가 생성될 때 자동으로 호출되는 메서드를 의미한다. 파이썬 메서드명으로 __init__를 사용하면 이 메서드는 생성자가 된다.

 

 

 

 

생성자를 호출할 때 매개변수로 값을 전달하지 않으면 오류가 발생한다.

 

 

 

 

이제 잘 작동이 되고 있다.

 


 

 

 

 

클래스의 상속

상속이란 '물려받다'라는 뜻으로, 클래스에도 이 개념을 적용할 수 있다. 어떤 클래스를 만들 때 다른 클래스의 기능을 물려받을 수 있게 만드는 것이다. 이번에는 상속 개념을 사용하여 우리가 만든 FourCal 클래스에 a의 b 제곱 값을 구할 수 있는 기능을 추가해보자.

 

 

상속을 받은 기능을 그대로 사용할 수 있음을 확인할 수 있다. 이제 원래 목적인 a의 b 제곱을 계산하는 MoreFourCal 클래스를 만들어보자.

 


 

 

 

상속은 MoreFourCal 클래스처럼 기존 클래스는 그대로 놔둔 채 클래스의 기능을 확장할 때 주로 사용한다.

 


 

 

 

 

메서드 오버라이딩

이번에는 FourCal 클래스를 다음과 같이 실행해보자.

 

 

0으로 나누려고 할 때 이와 같은 오류가 발생한다. 0으로 나눌 때 오류가 아닌 값 0을 리턴받고 싶다면 어떻게 해야 할까?

 


 

 

 

 

부모 클래스에 있는 메서드를 동일한 이름으로 다시 만드는 것을 메서드 오버라이딩이라고 한다.

 


 

 

 

 

 

클래스 변수

객체 변수와는 성격이 다른 클래스 변수에 대해서 알아보자.

 

 

Family 클래스의 lastname의 문자열을 '박'으로 바꾸면 어떻게 될까?

 


 

 

 

 

모두 변경이 되고 있다. 클래스 변수를 가장 늦게 변경하는 이유는 클래스에서 객체변수가 클래스변수보다 훨씬 중요하기 때문이다.

 


 

 


 

 

 

학습을 마치고

클래스에 대한 학습을 모두 마쳤다. 공부를 하긴 했지만 무슨 내용인지 확실히는 잘 모르는 부분도 많이 있었다. 그리고 집중도 잘 안되기도 했다. 그래도 저녁에 공부할 수 있는데까지 해보자!