Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
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
more
Archives
Today
Total
관리 메뉴

Nonamed Develog

[TIL][240704] class, Branch(PyCharm) 본문

WHAT I LEARN/TIL

[TIL][240704] class, Branch(PyCharm)

노네임드개발자 2024. 7. 4. 21:10
어떤 문제가 있었나?

팀 과제 <클래스 사용해보기>를 진행 중 클래스에 대한 이해도가 부족하여 문제를 이해할 수 없었다. 또한 PyCharm과 git을 함께 사용하는 방법은 배우지 못해서 협업하는데 어려움이 있었다.


무엇을 시도했나?

복습으로 클래스 관련 파이썬 기초/심화 강의를 수강하고, 해당 강의의 코드를 실행해보며 이해하려고 노력했다. 하지만 문제를 푸는데 어려움이 있어서 추가적으로 구글링을 시작했다. 한 파이썬 강의 포스트를 연재하는 한 블로그를 발견했다. 완전히 이해는 안되지만 그 블로그를 참조하여 <클래스 사용해보기> 문제를 따라 코드를 작성해봤다.


어떻게 해결됐는가?

코드를 작성하니 50% 정도는 이해한 느낌이었다. (문제를 어떻게 풀어야하는지 이해한 정도...) 완벽히 이해하기 위해서 예제도 풀어보고 클래스에 대한 내용은 필사를 하며 머리 속에 넣으려고 했다. 어느정도 이해도가 쌓이니 팀원들과 과제에 대한 커뮤니케이션도 자유로웠고 코드를 작성하는데 두려움이 줄었다.

참고 블로그: https://elvanov.com/182


새로 알게 된 점은 무엇인가?

왜 class를 사용해야 하는가?

동작하는 부분을 분리시켜 코드 수정에 유리하고 중복으로 코드 작성하지 않게 도와준다. 예를 들어 하나의 클래스에서 여러개의 인스턴스를 만들 수 있는데 각 인스턴스는 마다 같은 점과 다른 점을 쉽게 구분할 수 있다.

 

__init__ 메소드 

이 메소드는 생성자라는 특별 메소드로 객체의 동작을 만들 때 이용한다. 이 메소드의 첫번 째 인수는 무조건 self인데, 메소드가 호출 될 때 항상 자동으로 호출 된다. self는 매우 특별한게 클래스를 통해서 어떤 self 객체가 만들어지면 그 객체의 자기 자신을 의미한다. 그리고 self 뒤에 인수를 붙여주고 인수를 붙이고 싶지 않으면 self만 붙여준다.

 

__init__ 메소드는 생성자라고 했는데 의미를 더하면 객체가 생성될 때 속성(attribute)를 초기화 하는 역할을 하기 때문이다.

1. 속성 초기화 "객체.인수= 속성"라 할 수 있다. ex)self.name = name 객체는 name이라는 속성을 가지게 정의

2. 속성에 접근 "객체.인수"를 통해 이 객체가 갖고 있는 속성에 접근할 수 있다.

3. 객체 생성(인스턴스)

__init__ 메소드에서 생성자는 return이 없어도 객체를 만들어 return한다. 여기서 나오는 객체를 인스턴스라 한다.

 

메소드 호출

인스턴스명.메소드명. 메소드의 내부의 self는 해당 인스턴스를 가리키므로 인스턴스의 속성을 가진다.

한 번에 메소드 접근하기 위해선 리스트에 인스턴스를 append하고 for문을 통해 반복을 하면 된다.

 

PyCharm - Github

지난 번에 파이참에서 Github으로 초기커밋과 푸시를 할 때 git bash에서 github 정보를 입력했었다. 브랜치를 하기 위해서는 왼쪽 하단에 git이라는 버튼이 있는데 그 부분을 이용하여 쉽게 접근이 가능했다. 오히려 vscode와 github를 연동할 때 로컬에서 사용하는 명령어 논리를 따라하니 어렵지 않았다.


무엇을 느꼈고 내일은 무엇을 할까?

팀 과제에서 hashlib와 logging 라이브러리를 이용하여 비밀번호를 암호화하고 사용자가 확인할 수 있게 구현하는 역할을 담당했다. 해당 라이브러리를 공부하고 코드를 작성할 예정이다. 남은 시간엔 클래스의 상속을 공부할 예정이다.