Python

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

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