2주차는 너무 길었다....!
한창 쉬다가 시작한 1주차와는 다르게 2주차에는 하루하루 피곤해져 가는게 너무너무 체감됐다..
그만큼 1주차에 비해 이룬 것이 많다는 뜻
2주차를 요약해보자면 클래스부터 예외처리 등등 파이썬의 피날레를 보았으며 새로운 Database를 다루는 SQL 언어에 대해 배웠다.
주섬주섬 모아온 지식의 밑천이 드러났기에 커피를 8시간 내내 들이부으며 수업 시간엔 수업에 집중했다. 하지만 하루는 24시간이었고.... 감히 시간이 아깝다고 생각한 죄로 수업 후 1~2시간, 집에 가서 1시간 정도를 다른 공부에 투자하게 되었다.
?뭐했는데?
우선 기본적인 자료구조와 알고리즘이 사용되기 시작하는 프로그래머스 Lv.2 단계 문제들을 풀고 정리하기 시작했으며... -> 풀고 나서 보는 다른 사람들의 풀이는 정말 눈을 의심케 만든다. Git에 대해 깊이 알고 싶어 'Pro Git 2nd Edition' 정리본을 읽기 시작했으며... 파이썬 독학 공부를 위한 책을 공부했으며... 또 뭐했지.... 맥주도 하루 마셨다 ㅎ
그치만 아직 무엇 하나 끝을 보지 못했기에 수업 내용에 대해 이야기해 보겠다.
그렇게 선정된 오늘의 주제.
클래스는 바보야...
self와super는 자기 자신의 클래스 객체와 부모 클래스 객체를 받는다.
지난 시간에 객체에 대해 깨달으면서 이전까지는 몰랐던 그 놈의 self 와 super 에 대해 꿰뚫게 되었다. 와! 드디어!
class Person():
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person('가나다', 10)
구조를 알고 나니 위 코드의 작동 구조나 순서, 객체 생성 과정등이 눈에 들어오기 시작했지만 전까지만 해도 클래스는 악몽 그 자체였다.
그 놈의 self 가 뭐길래 __init__ 메소드가 필수로 받으며 밑의 변수들은 죄다 self.~ 꼴인지..
파이썬은 효율을 위해 메모리에 공간을 나눈다. 예를 들면 전역 변수를 저장하는 공간, 쓰고 버릴 지역 변수를 저장하는 공간 등이다.
그 중 클래스들을 저장하는 공간이 따로 있는데 바로 이곳에 클래스를 처음 만들 때 지정하는 모든 변수와 메소드들이 적혀있는 것이다.
그럼 instance, p1 은 어떻게 만들어지나?
p1 객체를 처음 생성하게 되면 클래스 객체를 저장하는 별도 공간에 해당하는 attribute 와 기존 클래스 자체의 주소를 저장하게 된다.
이 attribute, 여기서는 '가나다'와 10 을 저장할 때 얘네가 p1의 속성이라는 것을 알아야하는데 이를 위한 장치가 self.~ 인 것이다.
클래스가 호출될 때 self 변수에 p1 객체를 받고 이를 통해 __init__ 함수가 self.name, 즉 p1.name 을 저장할 수 있게 되는 것이다.
알고 있었다고?
나도 이제 알아 ㅋ
파이썬도 바보야....
처음 파이썬에 대해 배울 때 파이썬의 내부 구동 방식에 대해 궁금증을 가진 적이 있었다. 예컨대 def, del 등의 예약어에는 무슨 장치가 되어있길래 저런 기능들을 가지는 걸까, 혹은 str(), int() 등의 함수는 어떻게 만들어져 있는 걸까... 등등의 내용이 있다.
위처럼 편한 기능들은 처음 클래스를 만들 때 개발자 분들이 손수 빚어놓은 결과물이다.
함수를 정의할 때 필수로 __init__ 를 사용하게 된다. 그런갑다... 하고 쓰고 있었지만 저 작대기작대기 세트가 특수 메소드, 특별한 상황에서 자동으로 호출되는 함수를 말하는 것이었다 !
그 중 __init__은 처음 클래스가 생성될 때 자동으로 호출되는 아이고, 놀랍게도 __str__, __int__ 등의 특수 메소드 들도 실존하고 있었다.
class Int(부모 클래스):
def __str__():
return str(self)
a = 42 # 얘는 int 클래스
str(a)
-> 내부 __str__() 메소드 호출
-> return str(self=a=42)
위 코드에서와 마찬가지로 파이썬을 사용하면서 당연하게 느끼던 상당수의 구조가 실제로는 하나하나 정교하게 짜여진 각본이라는 사실을 깨닫게 되었다.
그래서?
2주차는 힘들었다 !
잠을 6~7시간으로 맞추고 생활해봤는데 상당히 고됨을 느꼈다... 나는 역시 8시간은 자야겠어.
그럼에도 수업 내용 하나하나가 너무나 유익했고, 곁가지로 하고 싶은 Git이나 PCCP 공부나 영어 공부 등등도 꾸준히 하고 있어 보람차지 아니하지 아니할 수? 없었따. ...? 보람찼단 뜻이다.
다음주에 처음으로 소형 프로젝트를 진행하게 된다.
욕심을 부려 조금 색다른 주제를 찾아 갔는데 조원분들이 혼쾌히 오케이 해주셔서 기대가 되는 주말이다.
쨋든 모두 화이팅!
귀여우시네요..