Object-Oriented Programming

이승연·2022년 2월 20일
0

Python

목록 보기
6/6

class

  • 클래스는 메모리에 올라가지 않고, 클래스를 활용해서 만들어낸 인스턴스가 메모리에 올라간다.
  • 하나의 클래스로 만들어낸 인스턴스는 모두 '독립적'
  • OOP 원칙
    • 캡슐화
    • 은닉화
    • 상속
    • 다형성
  • 이 네가지 원칙을 지켜서 만든 것을 class, 네가지 원칙을 지킨 프로그래밍을 oop, oop를 지원하는 언어가 파이썬, 타입스크립트, 자바, 러스트, 고... 등등
  • 클래스를 활용해 인스턴스를 만들면 클래스를 초기화하고 각각의 인스턴스 안에 공간이 생김. 그 공간에 instance 변수와 instance 메서드를 선언하고 접근할 수 있게 된다. 또한, class 변수와 class 메서드를 선언하고 접근할 수 있게 된다.
  • class 변수와 class 메서드는 참 멋지다. 예를 들어 생성자 함수가 실행될 때 population += 1를 해준다면 본인의 '자식'들이 몇개 생겼는지도 알 수 있다. 잘만 활용하면 상당히 메타적인 작업을 할 수 있겠구나라고 생각했다.

namespace

  • 신기하게도 인스턴스를 통해 클래스 메서트와 변수에 접근할 수 있다. 하지만 클래스를 초기화하지 않고 인스턴스 메서드와 변수에는 접근할 수 없다. 참고할 self가 없지 않은가!
  • namespace: 개체를 구분할 수 있는 범위
  • __dict__라는 매직 메서드를 사용해서 namespace를 확인할 수 있는데, 파이썬에서는 메모리 효율화를 위해 인스턴스 메서드 네임스페이스를 클래스에 넣어둔다. 따라서 한 인스턴스의 메서드를 실행하면 그 클래스의 인스턴스 메서드를 확인하고 실행한다.
    유용한 메서드:
    dir() : 실제로 사용할 수 있는 네임스페이스의 key값을 확인할 수 있당
    __doc__ : class의 주석 확인
    __class__ : 어떤 클래스로 만들어진 인스턴스인지 확인

0개의 댓글