build my life

[Python] 클래스 본문

Python

[Python] 클래스

dalovee 2022. 8. 9. 17:27
728x90

클래스

  • 변수와 함수를 묶어놓은 개념
  • 클래스는 객체(데이터와 기능을 갖고 있는..)를 만들기 위한 설계도
  • 클래스를 메모리에 객체화 하면 그걸 인스턴스(instance)라고 한다.

 

클래스의 구조

  • 변수
    • 인스턴스 변수 : 객체화 되면 사용 가능한 변수
    • 클래스 변수 : 클래스 정의시에도 사용 가능한 변수
class PlayerCharacter:
	# 클래스변수
    character = "wizard"

    def __init__(self, hp=100, exp = 0):
    	#인스턴스변수
        self.hp = hp
        self.exp = exp

PlayerCharacter.character # output : wizard
  • 함수
    • 메소드 : 객체에 소속되어 있는 함수

 

  • 생성자
    • __init__메소드 : 객체 초기화 담당(= 객체의 변수의 값을 초기 설정
      • 객체화가 되었을 때 생성해야하거나 초기 값을 세팅해야하는 인스턴스 변수들이 있다면 __init__메소드 안에 선언(정의)하면 된다.

 

클래스 정의하는 방법

class <ClassName>: # pascal case, upper camel case
    def __init__(self):
        code context
        ...

    def <method_name>(self):
        code context
        ...

 

❗❗❗ self (중요!!!)

  • 클래스가 객체화 되었을 때 자기 자신의 주소를 받는 파라미터
  • 클래스가 인스턴스화 되면 메모리 상에서 어디에 있는지 self 파라미터의 주소값을 참조해서 객체의 변수에 접근한다.
  • 클래스를 정의할 때 메소드에 무조건 첫번째 파라미터로 self를 정의해줘야한다.
  • 클래스가 객체화 되었을 때 메소드 사용시 아규먼트로 넣어주지 않아도 자동으로 들어간다.

 

예시) PlayerCharacter 클래스를 만들어보자

class PlayerCharacter:
    def __init__(self, hp, exp):
        self.hp = hp
        self.exp = exp

    def attack(self): #내가 있는 인스턴스 위치에 접근하기 위해 self 파라미터 꼭 써주기!
        print("공격하기")
        self.exp += 2 #인스턴스 변수에 접근하려면 self 참조

 


✅ 클래스 정의할 때 꼭 기억해야하는 것

  1. 클래스를 정의할 때 __init__ 메소드를 무조건 정의하기
    ❗ 클래스가 객체화 되었을 때 사용할 변수들을 이 안에 무조건 정의하기
  2. 클래스 안에 메소드들을 정의할 때는 무조건 첫번째 파라미터로 self를 넣자.
  3. 클래스가 객체화 되서 해당 객체의 메소드를 실행할 때는 self는 자동으로 파이썬이 넣어주니까 신경쓰지말기
728x90

'Python' 카테고리의 다른 글

[Python] 예외처리(Exception handling)  (1) 2022.08.22
[Python] 상속  (0) 2022.08.09
[Python] 데코레이터(Decorator)  (0) 2022.08.09
[Python] 클로저(Closure)와 콜백함수(Callback)  (0) 2022.08.08
[Python] 람다 함수(lambda)  (0) 2022.08.08