HeYStRanGeR
article thumbnail

(2021.01.14)

 

여기서부터가 파이썬의 시작인듯하다.

두잇파이썬의 5장은 클래스, 모듈, 패키지 등등을 공부한다.

자바에서 들어본 용어들이 나온다.

 

내일까지 5장끝내야지~~

 

book.naver.com/bookdb/book_detail.nhn?bid=15052904

 

Do it! 점프 투 파이썬

파이썬 4년 연속 베스트셀러 1위!《DO IT! 점프 투 파이썬》 전면 개정판 출시!문과생도 중고등학생도 직장인도 프로그래밍에 눈뜨게 만든 바로 그 책이 전면 개정판으로 새로 태어났다! 2016년 《D

book.naver.com

참고도서: 두잇파이썬


 

클래스(class)

 

클래스는 아주 필수적인 요소는 아니고, 적당한 곳에 쓰면 아주 용이하게 쓰이는 듯하다.

 

어떠한 클래스를 생성하고, 클래스를 이용해서 여러 객체들을 만들 수 있다.

두잇파이썬 책에서는 과자틀을 클래스로, 그 틀로 찍어 만든 과자를 객체로 비유한다.

 

class 클래스 이름:
   내용
   내용
   ...

 

메서드는 우리가 흔히 아는 함수이다. 

클래스 안에 있는 함수를 따로 메서드라고 부른다.

 

def 함수 이름(매개변수):
   수행할 문장1
   수행할 문장2
   ...

일반 함수 선언과 마찬가지로 메서드도 위처럼 코드를 짜준다.

 

 

 

객체에 숫자 지정할 수 있게 만들기
class Fourcal():
   def setdata(self,first,second):
      self.first=first
      self.second=second

여기에서 (self, first, second)는 메서드의 매개변수이다.

self.first=first 와 self.second=second는 메서드의 수행문이다.

 

메서드의 매개변수에서 첫번째 매개변수 self는 다른 함수의 매개변수와는 다르다.

 

a=Fourcal()
a.setdata(4,27)

위 처럼 a 객체를 만들고 setdata 메서드를 호출하면

첫번째 매개변수 self에는 setdata 메서드를 호출한 객체 a가 자동으로 전달된다.

 

self.first=4
self.second=27

이것이 결국은 밑과 같은 의미이다.

 

a.first=4
a.second=27

 

 

사칙연산하는 클래스를 만들어보았다.

 

사칙연산 클래스

 

 

 

 

객체 a와 객체 b를 생성하고, setdata 메서드를 호출하여 값을 넣어준다.

 

 

 

그러면 이렇게 모든 것이 동작하는 것을 볼 수 있다!!

 

 


생성자(Constructor)

 

생성자는 클래스를 생성할 때, 자동으로 호출되는 메서드를 말한다.

객체에 초기값을 설정해야 할 필요가 있을 경우에 사용한다.

 

__init__를 사용하면 메서드는 생성자가 된다.

 

 

 

위에서 만들었던 사칙연산 클래스를 수정해보면

 

 

def __init__(self,first,second)
   self.first=first
   self.second=second

이렇게 __init__ 메서드를 써줄 수 있다.

 

여기에서 a=FourCal()을 실행할 때에는 ()안에 매개변수를 써주어야한다.

 

a=FoutCal(4,27)과 같이 코드를 입력해주면

 

 

이런식으로 실행되는 것을 볼 수 있다~~~!!

 

 


 

클래스의 상속

 

이미 만들어 놓은 클래스의 기능을 이어서 쓰고 싶을 때 클래스의 상속을 사용한다.

 

class 클래스이름(상속할 클래스이름):
   내용
   내용
   ...

기본 구조는 이렇다.

 

 

계속 보던 사칙연산 클래스로 공부를 했다.

FourCal 클래스를 상속해서 a의 b제곱을 계산하는 클래스를 만들어보았다.

 

 

이렇게 클래스 상속을 해주면

 

 

power 메서드가 실행되는 것을 볼 수 있음!!!

 

 

 

++++

 

원래 만들어 놓은 메서드에 덮어쓸 수 있는 메서드 오버라이딩도 있다.

메서드 오버라이딩을 하면 기존의 메서드가 아닌 오버라딩한 메서드가 호출된다.

 

 

나누기에서 0으로 나눌경우 0을 리턴값으로 나오는 것으로 바꿔주었다.

 

 

 


 

클래스 변수

 

객체 변수는 다른 객체들에 영향받지 않고, 독립적으로 그 값을 가진다.

클래스 변수는 그 클래스로 만든 모든 객체에 공유된다.

 --> 같은 메모리를 가진다.

 

 

class 클래스이름:
   클래스변수이름 = 내용
   ...

이렇게 클래스 변수를 선언할 수 있다.

 

 

클래스이름.클래스변수

이렇게 클래스 변수를 사용할 수 있다.

 

 

 

클래스 변수 선언하고 생성

 

클래스 변수 출력

 

객체에 클래스 변수 사용

 

클래스 변수 값 변경

 

 

클래스 변수 공유

 

 

클래스 변수보다는 객체 변수가 더 많이 쓰인다고 한다.

 

 

728x90
profile

HeYStRanGeR

@HeYStRanGeR

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!