상세 컨텐츠

본문 제목

[개미의 걸음 Python 29차시] 객체와 클래스 with 식별자, 소멸자, 메소드

Python

by IT개미 데이터 2020. 7. 29. 23:23

본문

728x90

객체[Object]

여러가지 속성을 가질 수 있는 모든 것

  • 프로그램에서 필요한 요소만을 사용해 객체를 표현하는 것을 추상화[Abstraction]이라고 함
  • 포괄적인 의미로 추상화는 복잡한 자료, 모듈 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것
  • 객체와 관련된 코드를 분리할 수 있게 하는 것이 객체 지향 프로그래밍의 핵심!
  • 객체를 조금 더 효율적으로 생성하기 위해 만들어진 구문이 클래스!

 

 

 

클래스[class]

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

객체를 쉽고 편리하게 생성하기 위해 만들어진 구문

  • 클래스 이름은 캐멀 케이스[각 단어의 앞 글자를 대문자로 표기] 방식으로 작성하는 것이 좋음
  • 클래스 이름과 같은 함수(생성자)를 사용해 객체를 생성
  • 이처럼 클래스를 기반으로 만들어진 객체를 인스턴스[Instance]라고 함
  • 속성[변수]과 기능[함수]를 가질 수 있음

클래스 변수

class 클래스 이름:
    클래스 변수 = 값
  • class 구문 바로 아래의 단계에서 변수를 선언하기만 하면 클래스 변수가 생성
  • 단순히 class 내에 있는 변수이므로 사용 방법은 일반 변수와 동일!
  • class 변수에 접근하기 위해서는 "클래스 이름.변수 이름"을 사용

# 인스턴스 변수와 클래스 변수

더보기
인스턴스 변수 인스턴트를 생성해야 비로소 사용 가능한 변수
클래스 변수 클래스 내의 공간이 할당된 변수
인스턴트에는 별도의 공간이 할당되지 않음[여러 인스턴스가 클래스 변수의 공간을 같이 사용]

클래스 함수

class 클래스 이름:
    @classmethod
    def 클래스 함수(cls, 매개변수):
    	pass
  • class 구문 내에서 함수를 선언만 하면 클래스 함수가 생성
  • class 함수의 첫 번째 매개변수에는 클래스 자체가 들어옴[cls]
  • class 함수를 호출하기 위해서는 "클래스 이름. 함수 이름(매개변수)"를 사용
  • 클래스 함수를 생성하기 위해 데코레이터를 사용

# 데코레이터[Decorator]

더보기

@로 시작하는 것을 데코레이터라고 함

만드는 방법에 따라 함수 데코레이터와 클래스 데코레이터로 나뉘지만 기능은 동일

클래스 상속[Inheritance]

기존의 클래스가 가지고 있는 필드와 메소드를 그대로 물려받는 새로운 클래스를 만드는 것

공통되는 부분들을 둔 클래스를 중심으로 상속을 받으면 일관되고 효율적으로 프로그램을 짤 수 있음

 

 

 

생성자[Constructor]

class 클래스 이름:
	def __init__(self, 추가적인 매개변수):
    	pass

클래스 이름과 같은 함수

  • 생성자는 __init__ 라는 이름을 가짐
  • 클래스 내부의 함수는 첫 번째 매개변수로 반드시 self를 입력한다.
      → self는 자기 자신을 나타내는 딕셔너리
      → self는 키워드가 아닌 단순한 식별자

 

소멸자[Destructor]

생성자와 반대로 인스턴스가 소멸될 때 호출되는 함수

  • 클래스 내부에서 __del__(self) 형태로 함수를 선언해서 만듦

 

메소드[Method]

class 클래스 이름:
	def 메소드 이름(self, 추가적인 매개변수):
    	pass

클래스가 가지고 있는 함수

  • 생성자를 선언하는 방법과 유사하지만 첫 번째 매개변수로 self를 넣어줘야 한다!
  • 메소드 안에서 필드에 접근할 일이 없다면 self를 생략할 수 있음
  • 클래스를 기반으로 객체를 만들고 객체 뒤에 .(마침표)를 입력하면 자동완성기능[비주얼 스튜디오 코드]가 나타남
        → 직접 만들지 않은 특이한 이름을 가진 함수들이 많이 있음
        → 파이썬 클래스를 사용할 때 제공해주는 보조 기능들
        → __<이름>__() 형태를 지닌 함수들로 특수한 상황에서 자동으로 호출됨

# 특이한 이름의 메소드

더보기
이    름 영    어 설    명
eq equal 같다
ne not equal 다르다
gt greater than 크다
ge greater than or equal 크거나 같다
It less than 작다
le less than or equal 작거나 같다.

 

 

 

 

 

728x90

관련글 더보기

댓글 영역