묭동이 개발 블로그
  • [Python] 클래스 선언과 객체 생성
    2023년 12월 30일 15시 03분 19초에 업로드 된 글입니다.
    작성자: 묭동이

    클래스(class)

    • "함수"의 확장
    • 사물의 "설계도"
      • Ex) 차량의 설계도
    • 속성(Attribute)과 메소드(Method)를 가짐
      • Ex) 속성(성질, 상태) : 핸들, 문, 브랜드, 모델명, 연식 등
      • Ex) 메소드(기능, 동작) : 전진, 후진, 정지 등
    • 클래스 생성 방법
      • class '클래스 이름'
        • Ex) class Car:

    객체(object)

    • 클래스('설계도')로 부터 만들어낸 사물
    • 객체는 속성과 메소드를 가질 수 있음

     

    Attribute(속성) : brand, model, year

    Method(메소드) : init(초기화 메소드), start, stop, __str__

    • def __init__(self, ~)
      • 초기화 메소드로 객체를 생성하면 처음으로 실행된다
    • def start(self)
      • 차량의 움직이고 있는 상태에 관련된 메소드
      • 객체를 생성했을 때 처음으로 실행된 is_moving의 값인 False를 체크하여 차량의 상태(정보)를 출력한다
      • 이미 움직이고 있는 경우(= is_moving 값이 True인 경우)
        • 차량이 이미 움직이고 있다고 출력
      • def stop(self)
        • 차량의 정지한 상태에 관련된 메소드ㅡ
        • 객체를 생성했을 때 처음으로 실행된 is_moving의 값인 False를 체크하여 차량의 상태(정보)를 출력한다
        • 이미 정지하고 있는 경우(= is_moving 값이 False인 경우)
          • 차량이 이미 정지했다고 출력
      • def __str__(self)
        • 차량의 연식, 브랜드명, 모델명의 정보를 출력한다

     

     

    Car 클래스의 객체인 my_car를 생성

    객체를 생성할 때 입력한 "Toyota", "Corolla", 2020 데이터는 초기화 메소드를 통해 저장된다

    클래스의 메소드를 사용할 때는 객체명.메소드명(인자)로 사용가능하다

    Ex) Car 클래스의 start(), stop(), __str__() 메소드 사용

     

    * 객체를 생성할 때 주의할 점 *

    초기화 메소드인 init 메소드의 argument 개수와 동일하게 값을 입력해야 함

    아래 에러는 init 메소드의 인자 개수와 같지 않게 입력하여 발생한 오류이다

     

    클래스 사용의 엄청난 특징은 객체(인스턴스)가 독립적으로 구현이 되며 동시에 실행되고 있다는 점이다

    위 코드의 출력 결과

     

     

    해당 클래스의 존재하지 않는 메소드를 사용하게 되면 AttributeError가 발생한다

    • "AttributeError": 클래스나 인스턴스에서 찾을 수 없는 속성(변수) 또는 메소드(함수)에 접근하려고 할 때 발생
    • 메소드도 클래스의 속성 중 하나로 간주되므로, 클래스에 정의되지 않은 메소드를 호출하려고 하면 "AttributeError"가 발생

    메소드 에러가 아니라 왜 AttributeError가 발생하지? 생각할 수도 있다

    이는 파이썬에 MethodError가 존재하지 않기 때문이다

    댓글