【python】 객체 지향 프로그래밍 기초 vol.2 ~ 객체와 클래스 ~

개체 지향 공부의 연속입니다.

수업



객체 지향에서 가장 기본적인 구조로, 관리 대상이 되는 정보(변수)와 행동(함수)을 정의한 템플릿입니다.

클래스의 기능으로서, 「캡슐화」와 「인스턴스(오브젝트의 생성)」가 있다.

캡슐화



변수와 함수를 정리한 다음 외부에 공개하는 정보를 제한하는 기능

여러 변수와 함수를 하나의 클래스로 결합하여 프로그램을 정리하고 정리할 수 있습니다.

예: 체중과 키를 전달하면 BMI와 적정 체중을 구하는 함수
proper = 22

def cal_bmi(weight, height):
    return weight / height ** 2

def cal_proper_weight(height):
    return height ** 2 * proper

proper이라는 글로벌 변수가 사용되고 있다.

클래스를 사용하면 다음과 같습니다.
class Calculation:
    proper = 22

    def bmi(self, weight, height):
        return weight / height ** 2

    def proper_weight(self, height):
        return height ** 2 * Calculation.proper  

변수와 함수를 결합할 수 있다.

클래스가 가지는 변수를 클래스 변수(속성), 클래스가 가지는 함수를 메소드라는 이름으로 부른다

위의 예라고 Calculation 클래스는 클래스 변수 proper와 bmi 메소드, proper_weight 메소드를 가지는 클래스라고 할 수 있다.

클래스 정의



수업을 만드는 이미지

이 예에서는, 좌기로 표현되고 있는 것을 추상화해 클래스로서 정의하고 있다. 공통된 속성을 정리하여 그룹화하고 그 그룹핑에 이름을 붙인다.

수업을 만드는 방법


  • class 키워드 뒤에 클래스 이름을 쓰고 오른쪽에 콜론 (:)을 붙입니다
  • 관례로서 최초의 문자는 대문자
  • 변수는 들여쓰고 선언
  • class Player:
        name = ''
        position = ''
        attack = 0
        defense = 0
        technique = 0
        skill = ''
    

    객체를 만드는 구문


  • クラス名()로 객체를 만들 수 있습니다.
  • 객체를 생성하는 것을 초기화(이니셜라이즈)라고 한다
  • 클래스의 정보를 계승해 생성된 객체를 인스턴스라고 한다
  • christefan = Player()
    christefan.name = 'クリステファン・ローディ'
    christefan.position = 'FW'
    christefan.attack = 409
    christefan.defense = 193
    christefan.technique = 395
    christefan.skill = '天衣無縫'
    print(christefan.name, christefan.position, christefan.attack, christefan.skill)
    
    delby = Player()
    delby.name = 'デルビー・ベルコム'
    delby.position = 'OMF'
    delby.attack = 326
    delby.defense = 259
    delby.technique = 368
    delby.skill = '銀河の象徴'
    

    실행 결과
    クリステファン・ローディ FW 409 天衣無縫
    

    객체와 클래스



    객체는 클래스를 기반으로 만들어졌으며 파이썬의 모든 값은 객체입니다. 클래스는 객체를 만드는 설계도로 객체는 클래스에서 만든다.



    클래스의 종류를 나타내기 위해서(type)이라는 단어를 사용한다. 예를 들어, 문자열의 클래스 str은 str 형으로, 정수의 클래스 int는 int 형이된다.

    클래스도 오브젝트이며, 작성한 Player 또한 오브젝트이다. 클래스라고 하는 오브젝트의 형태(type)는 type(형)으로, type(Player) 는, type 가 된다.
    type 를 사용하면 클래스도 만들 수 있습니다. 이 클래스는 class 로 작성한 것과 같은 객체로, type 클래스의 객체이다.
    Player = type('Player')
    
    christefan.name = 'クリステファン・ローディ'
    christefan.position = 'FW'
    christefan.attack = 409
    christefan.defense = 193
    christefan.technique = 395
    christefan.skill = '天衣無縫'
    print(christefan.name, christefan.position, christefan.attack, christefan.skill)
    print(type(Player))
    

    실행 결과
    クリステファン・ローディ FW 409 天衣無縫
    <class 'type'>
    

  • 클래스 (class) : 관리되는 정보와 행동을 정의하는 템플릿.

  • 인스턴스 (instance) : 클래스의 모든 정보를 상속받은 객체입니다.
  • 좋은 웹페이지 즐겨찾기