클래스와 객체지향 프로그래밍

class

  • 클래스는 데이터와 기능을 함께 묶는 방법을 제공한다.

  • 파이썬 클래스는 객체 지향형 프로그래밍의 모든 표준 기능들을 제공한다. ( 상속, 다형성, 캡슐화 )

    • 클래스 상속 메커니즘은 다중 베이스 클래스를 허락하고,

    • 자식 클래스는 베이스 클래스나 클래스들의 어떤 메서드도 재정의할 수 있으며,

    • 메서드는 같은 이름의 베이스 클래스의 메서드를 호출할 수 있습니다.

  • 보통 클래스 멤버들은 public

    • private은 존재하지 않는다.

    • 관례로 어트리뷰트 앞에 _를 붙인다.

  • 내장 클래스도 사용자가 확장하기 위해 베이스 클래스로 사용가능하다.

class Human():
    """사람"""

# 인스턴스 생성
person1 = Human()
person2 = Human()

person1.language = '한국어'
person2.language = 'English'

print(person1.language) # 한국어
print(person2.language) # English
  • 자바스크립트와 다르게 인스턴스 생성은 클래스 실행만 하면 된다. (new 연산자같은거 없이!)

  • 클래스와 인스턴스를 이용하면 data와 코드를 사람이 이해하기 쉽도록 wrapping할 수 있다.

모델링 modeling

  • 클래스로 현실의 개념을 현하는 것

클래스 객체

  • 래스 객체는 두 종류의 연산을 지원한다.

    • attribute 참조

    • 인스턴스 만들기

  • 클래스 인스턴스 만들기는 함수 표기법을 사용한다.

    • x = MyClass()

  • 인스턴스 만들기 연산은 빈객체를 만든다.

  • 많은 클래스는 특정한 초기 상태로 커스터마이즈된 인스턴스 객체를 만드는 것을 좋아한다.

    • __init__()이라는 특수메서드를 정의할 수 있다.

    • 클래스 인스턴스 만들기는 새로 만들어진 클래스 인스턴스에 대해 자동으로 __init__()을 호출한다.

인스턴스 객체

  • 인스턴스 객체는 한종류의 연산을 지원한다.

    • attribute 참조

      • 데이터 어트리뷰트

      • 메서드

데이터 어트리뷰트

  • 선언될 필요가 없다.

  • 지역변수처럼 처음 대입될 때 태어난다.

method 이해하기

  • 메서드 객체에 속하는 함수이다.

  • 클래스에 묶여서 클래스의 인스턴스와 관계되는 일을 하는 함수

  • 파이썬은 인자를 필요로 하는 함수를 인자 없이 호출하면 예외를 일으킨다.

self

  • 메소드의 첫번째 인자

  • 인스턴스의 매개변수를 전달 할 때는 self 매개변수는 생략하고 전달

특수한 메서드

  • 초기화 함수 : __init__ 인스턴스를 만들 때 실행되는 함

  • 문자열화 함수: __str__ 인스턴스 자체를 출력할 때의 형식을 지정해주는 함수

class Human():
    def __init__(self, name, weight):
        """초기화함수"""
        """아래 create함수를 대체할 수 있다."""
        print("__init__ 실행")
        person.name = name
        person.weight = weight
    
    def __str__(self):
        """문자열화 함수"""
        return "{} ( 몸무게 {}kg )".format( self.name, self.weight )

    def create(name, weight):
        person = Human()
        person.name = name
        person.weight = weight
        return person
        
    def eat(self):
        self.weight += 0.1
        print("{}가 먹어서 {}kg이 되었습니다.".format(self.name, self.weight))
        
    def walk(self):
        self.weight -= 0.1
        print("{}가 걸어서 {}kg이 되었습니다.format(self.name, self.weight))

person = Human('조이', 52)

Last updated