본문 바로가기

Python

[Python] 모국어같은 파이썬... & Class 정리

0. 모국어같은 파이썬...


사실 엄밀히 따지면 R이 내 모국어라 할 수 있다. 학부 3학년에 통계관련 수업을 들으며 R을 접했고, 신선한 충격을 받았다. 데이터를 가져와서 원하는대로 가공하고, 엑셀로는 도저히 할 수 없는 (내 실력에서) 통계 산술들도 척척해내었다. 하지만 신기함도 잠시, 해당 학기를 마치고 프로그래밍에 다시 관심이 없어졌다. R로는 통계분석만 했으니까...(사실 핑계임)


아무튼 4학년이 되어서야 파이썬을 접하게 되었다. 학부연구생으로 들어간 랩실의 교수님이 내가 R을 쓰는걸 보고, 파이썬을 배워보는게 어떻겠냐 제안하셨고,(진짜로 제안이었습니다.) 그때 처음 접한 파이썬이 지금까지 내 주력 무기로 사용되고 있다.



나는 흔히 말하는 비전공자였고, 엑셀도 잘 다루지 못했다. 그럼에도 파이썬은 배우기 쉬운 언어였다. 하지만 "쉬운 언어"는 아닌 것 같다. 지금 나에게 "프로그래밍 입문에 파이썬이 적합하냐?"라는 질문에 javascript, java를 학습하면서 느꼈던 감상이 자신있게 "그렇다"라고 답변하기 어렵게 한다.(물론 저렇게나 어려운 질문에 답을 할만한 역량이 있지도 않다.) 그 이유에 대해서는 기회가 된다면 자세히 나눠보고 싶다.


그래서 난 마지막이라고 생각하고, 파이썬의 기초문법, 그것도 헷갈렸던 부분을 정리하며 개념을 다잡고자 한다.


맨처음은 처음으로 이해가 안되었던 파이썬의 문법, 그때는 "그래서 이게 왜 객체지향인데?"하고 생각했던 문법, 클래스이다.


앞으로 작성할 파이썬 기본 문법 정리는 Fastcampus의 "한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online."에서 일부 발췌했음을 밝힌다.


1. class


  1. class?
    • 클래스는 객체를 만들기 위한 설계도
    • 객체는 설계도로부터 만들어낸 제품

  1. class의 속성(attribute)과 메서드(method)
class Monster:
def __init__(self, health, attack, speed):
    # 얘네가 속성
    self.health = health
    self.attack = attack
    self.speed = speed

# 얘네가 메서드
def decrease_health(self, num):
    self.health -= num

def get_health(self):
    return self.health

# 인스턴스 생성
goblin = Monster(800, 120, 300)
wolf = Monster(1500, 200, 350)

# 인트턴스의 속성 호출
print(goblin.health)

# 인스턴스의 메서드 호출
goblin.decrease_health(100)
goblin.get_health()

  • init은 instance를 만들때 반드시 호출되는 메서드
  • self는 instance 자기 자신을 뜻함
  • instance를 생성할 때, 해당 instance가 self자리에 들어간다고 생각하면 됨
  • 생성자: 인스턴스를 만들 때 호출되는 메서드

  1. 파이썬에서는 자료형도 클래스다!
a = 10
b = '문자열 객체'
c = True

print(type(a))
print(type(b))
print(type(c))

>>> <class 'int'>
>>> <class 'str'>
>>> <class 'bool'>

  1. 상속
    • 클래스들의 중복을 제거하고 유지보수를 편하게 하기위해 사용.
    • 자식클래스가 부모클래스의 속성과 메서드를 가져올 수 있음
    • 메서드 오버라이딩: 부모 클래스의 메서드를 자식 클래스에서 재정의

'Python' 카테고리의 다른 글

[Python] 파이썬 동시성 프로그래밍 (1)  (0) 2022.02.07
[Python] 얕은 복사, 깊은 복사  (0) 2021.09.29
[Python] Module 정리  (3) 2021.09.13