Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 토이프로젝트
- Jar배포
- numpy
- todo project
- Postman
- 클래스
- RDS
- 파이썬
- sqlalchemy
- cerbot
- Django
- yaml
- 프리온보딩
- 함수
- 행렬곱
- 백엔드 인턴십
- self
- API
- spring boot
- 람다함수
- 집계함수
- mock server
- 코딩테스트
- EC2
- 컴프리헨션
- 프로그래머스
- Comprehension
- 파이써닉코드
- 조건연산
- PYTHON
Archives
- Today
- Total
build my life
[Python] 클래스 본문
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 참조
✅ 클래스 정의할 때 꼭 기억해야하는 것
- 클래스를 정의할 때 __init__ 메소드를 무조건 정의하기
❗ 클래스가 객체화 되었을 때 사용할 변수들을 이 안에 무조건 정의하기 - 클래스 안에 메소드들을 정의할 때는 무조건 첫번째 파라미터로 self를 넣자.
- 클래스가 객체화 되서 해당 객체의 메소드를 실행할 때는 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 |