Language/Python Python 클래스/클래스 변수
  • 728x90
    반응형

     

     

    목차

       

       

      클래스

      클래스 변수

      클래수 변수는 객체간 서로 공유되는 변수로 보통 클래스에 의해 생성되는 객체들이 공통적으로 사용할 목적으로 쓰인다.

      클래스 변수는 객체를 통한 접근(예:ptr.py)방법 외에 클래스를 통한 접근도 가능하다.

       

       

      클래스 함수

      클래스 에서 함수를 사용하는 방법은 위와 같다.

       

       

      Self 살펴보기

      위의 예제에서 sum함수는 첫 번째 입력값(self)을 가지고 가입한 사람인지 아닌지를 판단한다. test.sum(1, 1)이라는 호출이 발생하면 sum함수의 첫번째 인수인 self에는 호출 시 이용했던 객체(즉, test라는 아이디)가 자동으로 전달 된다.

      (※ 클래스 함수는 다른말로 메서드(Method)라고 부른다. 메서드의 첫번째 파리미터 self를 명시적으로 구현해야 하는 것은 파이썬만의 독특 특징이다.)

       

      객체 변수

      위와 같이 test라는 아이디와 홍길동이라는 이름을 연결해 주는 것이 바로 self이다. setname함수가 실행되는 순서는 다음과 같다.

       

      1. test라는 아이디를 가진 사람이 "홍길동" 이라는 이름을 setname함수에 입력으로 준다.

       

      2. 그러면 다음의 문장이 수행된다.

       

      3. self는 setname 함수의 첫 번째 입력값으로 test라는 아이디가 자동으로 전달되므로 다음과 같이 바뀔 것이다.

       

      4. name은 setname 함수의 두 번째로 입력받은 "홍길동"이라는 값이므로 위의 문장은 다시 다음과 같이 바뀔 것이다.

       

      💡 객체 변수의 값은 객체별로 고유하게 유지된다.

       

      __init__ 이란 무엇인가 ?

      객체를 만들 때 항상 실행되는 함수이다.

       

       

      사칙연산 클래스 만들기

       

      결과 :

       

       

      메소드의 또다른 선언 방법

      위와 같이 "클래스면.메서드" 형태로 호출할 때는 객체 a를 입력 인수로 꼭 넣어 주어야 한다. 반면에 앞에서 보았듯이 "객체. 메서드 "형태로 호출할 때는 첫 번째 입력 인수(self)를 반드시 입력해야 한다.

       

       

      "박씨네 집" 클래스 만들기

       

       

      __init__ 메서드로 초기값 설정하기

       

       

      클래스의 상속

      상속(Inheritance)이란 "물려받다"라는 뜻으로 어떤 클래스를 만들 때 다른 클래스의 기능을 물려받을 수 있게 만드는 것이다.

       

       

      메서드 오버라이딩

      travel 함수를 다르게 설정하고 싶으면 동일한 이름의 travel 함수를 HouseKim 클래스 내에서 다시 구현하면 된다. 이렇게 이름을 동일하게 다시 구현하는 것을 메서트 오버라이딩(Overriding)이라고 한다.

       

       

      연산자 오버로딩

      연산자 오버로딩(Overloading)이란 연산자(+, -, *, /,,,)를 객체끼리 사용할 수 있게 하는 기법으로, 연산자 오버로딩을 사용하면 위와 같이 동작하도록 만들 수 있다.

      pey + julite처럼 호출되면 __add__(self, other) 메서드의 self는 pey가 되고 other는 juliet이 된다. 따라서 아래와 같은 결과가 출력된다.

       

      결과 :

       

       

      "박씨네 집" 클래스 완성하기

       

      결과 :

       

       

       

       

       

       

      728x90
      반응형

      'Language > Python' 카테고리의 다른 글

      Python 패키지  (0) 2017.07.18
      [Python] 모듈  (0) 2017.07.17
      Python 파일 읽고 쓰기/with  (0) 2017.07.17
      [Python] 사용자 입력과 출력/print  (1) 2017.07.17
      [Python] 함수 사용법  (0) 2017.07.17
    상단으로