[ Python ] Django로 웹 서비스 개발하기 ( 2. Class, Object )

장고로 시작하는 2017년

본 글은 코드스쿼드가 진행하는 인프런의 장고 강의를 바탕으로 함
(참고 : http://bit.ly/2jE3ARl )


왜 객체 지향(OOP) 인가?

  • 프로그램의 규모가 커질 시에 효율적인 프로그래밍이 가능하다.
  • 특히 유지보수를 편하게 할 수 있기 때문이다.

클래스와 오브젝트

  • 클래스 : 메소드와 값을 가지는 사용자 정의 데이터 타입
  • 오브젝트 : 클래스를 인스턴스화 한 것
  • 객체 == object == instance 모두 비슷한 맥락에서 사용됨

오브젝트 실습 1

  • Text 라는 클래스를 만들었다. pass는 아무것도 안하겠다는 뜻
  • t = Text(); 는 실제 객체를 만든 것
  • print(t)를 해보니 콘솔에 Text object가 만들어졌음을 알 수 있다.
  • 이번에는 setText라는 메소드를 정의했다.
  • setText는 str 파라미터의 값을 자신의 변수인 text (self.text)에 할당하는 메소드이다.
  • print(t.text)를 해본 결과 “This is text.”라는 문자열이 출력됨을 알 수 있다.
  • 자바의 생성자처럼 객체를 생성할 시에 값을 넘겨주는 것도 가능하다.
  • 이전에 print(t)를 했을 땐 메모리값이 출력됬다.
  • __str__ 메소드를 오버라이딩(재정의)하여 객체를 출력할 때 값을 변경할 수 있다.
  • 객체지향적인 면에서 자바와 비슷한 점이 많았다.

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

  • 클래스 변수는 인스턴스 변수들이 공유하는 변수로
  • 자바의 static과 유사하다.
  • 위의 예를 보시면 num_users 는 클래스 변수, self.name은 인스턴스 변수라고 할 수 있다.