파이썬 초보입니다. 클래스를 이해할려고 많은 강의를 찾아 들어봤지만 클래스가 왜 필요한지 가장 정확하게 가르쳐 주는 것 같습니다. 다른 분들은 붕어빵틀과 붕어빵이라고만 해서 설계도와 인스턴스라고만 알고 있었는데 어디 소속된 함수인지 변수인지 쉽게 구별하는게 현재 저로서는 가장 유익한 클래스의 장점 같네요. 함수가 많아지다보니 나중에 만든 내가 봐도 무슨 함수인지 헷갈렸는데 이 강의 듣고 클래스만들어 새로 짜니까 함수와 변수가 싹 정리되었습니다. 초보에게 최고의 강의입니다.
안녕하세요. 감사히 잘 봤어요. 오늘 class(등급, 학급) 내에서 변수 지정이 없어도 기본인 'self(자신)' 의 명명이유를 알게 됐어요. 0:17 클래스 - 함수와 변수 묶음, 객체를 만드는 설계도 0:54 설계도 작성과정 1:02 설계도 - 다른 분들이 대학교에서 빵틀로 비유해서 설명한다고 하시던데 같은 비유이지요. 설계도, 빵틀, 제작기계, 공장 등에서 만든 제품, 각종 빵 등이 객체이겠지요. 2:16 객체명 지정 3:23 초기화 함수 및 클래스 내 모든 함수의 첫 매개변수는 자신(self)이다. 예제에서 변수를 지정하는 괄호 안에 기본인 자신과 5개 변수의 총 6개의 변수를 지정하고 이후 변수명을 지정할 때 자신과 5개 변수를 결합하여 자신의 5개 변수를 만들어서 숫자가 줄어든 것도 석연치 않고 자신.이름 = 이름 할거면 자신 넣을 것 없이 이름 하면 되는데 왜 자신을 넣었나 이해불가 혼란했는데, 2:16 객체명 지정하시는데 "아 그렇구나!" 탄성이 나왔어요. 객체명이 자신이에요. 파이선 설계자께서 객체명의 자리를 미리 준비하신거에요. 뭔가 이유가 있어서 '자신'이라는 이름을 지정하셨을 텐데 그 이유를 몰라서 그러려니 하고 이해 안돼도 그렇게 쓰면 결과는 맞았는데, 대학생 때 본인 책이 서점에서 팔리는 것을 보며 학교 다녔다는 분의 설명을 듣는 순간 번쩍 번뜩 떠 올랐어요. 객체명을 정하는 것은 색상 등 선택사항(변수들)을 정한 주문 제품명으로 비유하고, 실행후 객체 생성은 변수들의 각각 값들이 포함된 제품의 생산 배달로 비유하면, self는 설계도에 미래 제품명이나 발주자의 이름을 넣을 자리라고 비유하면 되겠어요. 어떤 제품이냐, 혹 누구의 제품이냐 이름을 정하는 것이지요. 문자대로 학급의 학생들의 이름을 붙이는 성명란이기도 하네요. 4:31 설계도명.초기화(제품명, 변수1, 변수2 ... 변수몇) 이 두 함수 호출 방법은 실제 초기화 함수가 아니라 설명을 위한 일반 함수의 이름이 '초기화'여서 작동 가능하고 2:16 객체명 지정시에도 클래스 '학생'에 초기화 함수가 없어 변수 지정도 없으므로 변수 입력없이 작동함. 클래스가 명시되면 변수 지정의 self 자리에 객체명을 입력한다. 4:58 제품명.초기화(변수1, 변수2 ... 변수몇) 이 두 함수 호출 방법은 실제 초기화 함수가 아니라 설명을 위한 일반 함수의 이름이 '초기화'여서 작동 가능하고 2:16 객체명 지정시에도 클래스 '학생'에 초기화 함수가 없어 변수 지정도 없으므로 변수 입력없이 작동함. 객체명이 클래스를 대체하면 self 없이 변수들만 입력한다. 6:48 실제 초기화 함수 설정 7:12 클래스를 def로 설계시 초기화(__init__)함수에서 변수 지정을 예를 들어 (self, pm1, pm2, pm3)로 총 4개여도 사용시는 self와 변수들의 결합은 필요에 따라 3개 모두 할 수도 있고, 1개도 안 할 수 있으나 객체명을 지정하여 self는 대응되었고 변수들 3개 모두를 입력해야 한다. 제품(객체)명 = 설계도(클래스)명(변수1, 변수2 ... 변수몇) 2023년 7월 12일 수 23시 태평양시간
윤인성 작가님 안녕하세요 저는 현재 작가님의 혼공파 책(개정판)으로 파이썬을 공부하고 있는 사람입니다. 제가 혼공파 책 (8)클래스 단원의 466쪽과 467쪽을 공부하다가 의문이 생겨서 이렇게 댓글로 질문을 남깁니다. 제가 앞서 언급한 페이지에서의 표현을 보면 클래스를 만드는데 클래스명을 Student로 한 경우에 이 클래스의 객체를 생성하는 놈인 Student()를 이 책에서는 생성자라고 부르더라고요. 그런데 제가 구글링도 해보고 다른 책도 찾아보니 생성자는 특정 클래스의 객체를 생성하는 함수인 "Student()" 다르게 말하자면 "클래스명()" 이런 놈이 아니라 클래스 내에 정의되어 있는 __init__() 함수라고 하더라고요. 용어 사용에 혼동이 생겨서 이렇게 질문 드립니다. 특정 클래스의 객체를 생성하는 클래스명()(ex. Student()) 이 함수가 생성자인가요? 아니면 클래스 내에 정의되어 있는 __init__() 함수가 생성자인가요? 아니면 둘 다 생성자인가요? 좀 자세히 설명해주시면 감사하겠습니다. PS 혼공파 책으로 파이썬 공부 정말 잘하고 있습니다 ^^
어떤 사람이 "집 안에서"는 "아빠"라고 불리지만, "집 밖에서"는 "윤 팀장"이라고 불릴 수 있는 것처럼 Student 클래스도 "집 안에서"는 "__init__()"이 생성자이고, "집 밖에서"는 "Student()"가 생성자입니다! 둘이 다른게 아니라 결국 같은 것입니다! PS. 뭐 내부적으로 더 파고 들면 Student()를 호출하면 __new__()가 호출되며 __new__()에서 __init__()을 호출해서 __new__()가 정확한 의미의 생성자라고 할 수 있겠지만 이 함수는 우리가 직접 만지는 함수가 아니라서 __init__()을 생성자로 보는 편입니다.
안녕하세요. 파이썬 공부 중인 뉴비입니다. 언제나 영상 잘 보고 있습니다. 클래스를 처음 접하면서 개인적으로 햇갈리는 부분들이 있는데 이에 대해 질문하고 싶어 댓글 달았습니다. Q1. class 학생리스트: 에서 def __init__(self): 부분에는 self.students = []가 작성되어 있는데, 학생리스트 클래스를 가진 객체를 생성하면 생성되는 객체마다 students라는 빈 리스트가 만들어지는 건가요? Q2. class 학생리스트: 에서 def print(self): 부분의 for 반복문에는 student.print()가 작성되어 있는데, student.print()에서 print() 함수는 학생 클래스에 있는 print() 함수를 사용하는 건가요? Q3. 질문2와 연계하여, 클래스를 생성할 때 함수를 만들면서, 객체뒤에 . 과 함께 함수명을 작성하는 것으로 함수를 사용하는 것을 자주 보는데, 새롭게 만든 클래스에 대해서 객체.함수명() 형태로 작성시 객체의 클래스를 스스로 판별하여 해당 클래스의 함수를 호출하는지도 궁금합니다. Q4. 질문3과 연계하여, 문자열 부분에서 is~() 함수와 관련된 내용을 다룰 때, 함수 앞에 있는 객체의 타입이 문자열일 경우에만 작동되었는데, 혹여 모든 상황에 대해서 '.함수명()' 형태의 함수들은 . 앞에 있는 객체가 어떤 타입/클래스인지 스스로 판별하여 그 타입/클래스에 정의된 함수를 적용하는 건지도 궁금합니다. 클래스 관련 초반 설명(인스턴스 설명 부)에서 제가 이해할 수 있는게 생겨서 좋았습니다. 아무것도 모르는 상태에서 클래스와 '인스턴스는 붕어빵틀과 붕어빵 관계야' 라는 비유를 들으면 이해조차 시도할 수 없는 문제가 생겼으니 말이죠... 몇회 반복하지 않은 상태이지만 강의 중에 제가 이해할 수 없는 내용이나 익숙하지 않은 단어가 연달아 나오는 설명을 들을 때마다 제가 해야할 것이 정해지는 느낌입니다. 정말 많은 도움이 되고 있습니다. 감사합니다.
전부 맞습니다. 실제 동작은 "파이썬 매일 코딩"이라는 책에 좀 자세하게 나오는데 (1) 함수들은 클래스 이름으로 묶여 좀 다른 곳에 저장됩니다. (2) . 연산자를 보면, 일단 "해당 클래스 이름으로 묶인 곳"에 가서 함수를 찾습니다. (3) 그리고 함수를 호출합니다. . 그래서 학생목록.print()와 학생.print()는 다른 함수를 호출합니다. 각각의 클래스가 가진 함수를 호출합니다.
더블클릭하면 식별자 전체가 선택됩니다. 그래서 Ctrl + C / Ctrl + V 하고 있는 것입니다! 코드가 짧고 + 어떤 부분을 변경하는지 조금 보이게 복붙을 사용한건데, 조금 더 좋은 방법은 변수/함수 식별자 하나 선택하고 F2 누르시면 이름을 변경하는 메뉴가 나옵니다. 여기에서 변경하면 관련된 식별자가 한꺼번에 바뀝니다.
코딩을 현재 파이썬을 배우고 있는 상황입니다. 하지만 대학교 과 특성상 여러 코딩을 다루다 보니 여쭙고 싶은 내용이 있어 댓글 남깁니다. 코딩으로 매트랩, 파이썬, c,c++,아두이노 이렇게 배우고자 합니다. 배워야하는 입장이고요 ㅠ 모두 윈도우, mac 관련없이 잘 호환이 될까요? 추가적으로 3d모델링도 잘 아신다면 이거에 대해서도 여쭙고 싶네요.
파이썬 초보입니다.
클래스를 이해할려고 많은 강의를 찾아 들어봤지만 클래스가 왜 필요한지 가장 정확하게 가르쳐 주는 것 같습니다.
다른 분들은 붕어빵틀과 붕어빵이라고만 해서 설계도와 인스턴스라고만 알고 있었는데 어디 소속된 함수인지 변수인지 쉽게 구별하는게 현재 저로서는 가장 유익한 클래스의 장점 같네요. 함수가 많아지다보니 나중에 만든 내가 봐도 무슨 함수인지 헷갈렸는데 이 강의 듣고 클래스만들어 새로 짜니까 함수와 변수가 싹 정리되었습니다.
초보에게 최고의 강의입니다.
안녕하세요. 감사히 잘 봤어요.
오늘 class(등급, 학급) 내에서 변수 지정이 없어도 기본인 'self(자신)' 의 명명이유를 알게 됐어요.
0:17 클래스 - 함수와 변수 묶음, 객체를 만드는 설계도
0:54 설계도 작성과정
1:02 설계도 - 다른 분들이 대학교에서 빵틀로 비유해서 설명한다고 하시던데 같은 비유이지요. 설계도, 빵틀, 제작기계, 공장 등에서 만든 제품, 각종 빵 등이 객체이겠지요.
2:16 객체명 지정
3:23 초기화 함수 및 클래스 내 모든 함수의 첫 매개변수는 자신(self)이다. 예제에서 변수를 지정하는 괄호 안에 기본인 자신과 5개 변수의 총 6개의 변수를 지정하고 이후 변수명을 지정할 때 자신과 5개 변수를 결합하여 자신의 5개 변수를 만들어서 숫자가 줄어든 것도 석연치 않고 자신.이름 = 이름 할거면 자신 넣을 것 없이 이름 하면 되는데 왜 자신을 넣었나 이해불가 혼란했는데, 2:16 객체명 지정하시는데 "아 그렇구나!" 탄성이 나왔어요.
객체명이 자신이에요. 파이선 설계자께서 객체명의 자리를 미리 준비하신거에요. 뭔가 이유가 있어서 '자신'이라는 이름을 지정하셨을 텐데 그 이유를 몰라서 그러려니 하고 이해 안돼도 그렇게 쓰면 결과는 맞았는데, 대학생 때 본인 책이 서점에서 팔리는 것을 보며 학교 다녔다는 분의 설명을 듣는 순간 번쩍 번뜩 떠 올랐어요.
객체명을 정하는 것은 색상 등 선택사항(변수들)을 정한 주문 제품명으로 비유하고, 실행후 객체 생성은 변수들의 각각 값들이 포함된 제품의 생산 배달로 비유하면, self는 설계도에 미래 제품명이나 발주자의 이름을 넣을 자리라고 비유하면 되겠어요. 어떤 제품이냐, 혹 누구의 제품이냐 이름을 정하는 것이지요. 문자대로 학급의 학생들의 이름을 붙이는 성명란이기도 하네요.
4:31 설계도명.초기화(제품명, 변수1, 변수2 ... 변수몇) 이 두 함수 호출 방법은 실제 초기화 함수가 아니라 설명을 위한 일반 함수의 이름이 '초기화'여서 작동 가능하고 2:16 객체명 지정시에도 클래스 '학생'에 초기화 함수가 없어 변수 지정도 없으므로 변수 입력없이 작동함. 클래스가 명시되면 변수 지정의 self 자리에 객체명을 입력한다.
4:58 제품명.초기화(변수1, 변수2 ... 변수몇) 이 두 함수 호출 방법은 실제 초기화 함수가 아니라 설명을 위한 일반 함수의 이름이 '초기화'여서 작동 가능하고 2:16 객체명 지정시에도 클래스 '학생'에 초기화 함수가 없어 변수 지정도 없으므로 변수 입력없이 작동함. 객체명이 클래스를 대체하면 self 없이 변수들만 입력한다.
6:48 실제 초기화 함수 설정
7:12 클래스를 def로 설계시 초기화(__init__)함수에서 변수 지정을 예를 들어 (self, pm1, pm2, pm3)로 총 4개여도 사용시는 self와 변수들의 결합은 필요에 따라 3개 모두 할 수도 있고, 1개도 안 할 수 있으나 객체명을 지정하여 self는 대응되었고 변수들 3개 모두를 입력해야 한다.
제품(객체)명 = 설계도(클래스)명(변수1, 변수2 ... 변수몇)
2023년 7월 12일 수 23시 태평양시간
눈이 팽팽도는구먼유
이해안가는부분은 남겨놨다가 나중에 통쨰로 복습하는게 좋나요 ?
아니면 그 장에서 이해갈떄까지 반복하고 넘어가는게 좋나여?
입문자인데 언어부터 막히니까 다음 책들이 무섭네유 ㅋㅋㅋ
우리가 영어 문법을 100% 알고 외국인과 회화하큰 것이 아닌 것처럼 → 언어 기본에서 모르는게 있어도 일단 넘어간 뒤 → 활용을 계속 해보는 굿이 좋습니다!
영상을 보고 빠졌던 머리카락이 다시 자랐습니다 감사합니다
정말 훌륭한 강의입니다. 배우는 입장에서 어떤 고민을 하는지까지 고려해서 짚어주셔서 감사합니다.
오늘은 여러번 다시 봐야겠군요. 이해는 되는데 뭔가 '왜 그러지'하는 찝찝함이 남네요.
클래스가 가지는 의미를 다시금 되짚고 보도록 하겠습니다.
오늘도 감사합니다.
안녕하세요. 감사히 잘 봤어요.
전체 영상 마치고 다시 반복해서 기억지속하려 해요.
2023년 7월 26일 수 19시 태평양 시간
윤인성 작가님 안녕하세요 저는 현재 작가님의 혼공파 책(개정판)으로 파이썬을 공부하고 있는 사람입니다.
제가 혼공파 책 (8)클래스 단원의 466쪽과 467쪽을 공부하다가 의문이 생겨서 이렇게 댓글로 질문을 남깁니다.
제가 앞서 언급한 페이지에서의 표현을 보면 클래스를 만드는데 클래스명을 Student로 한 경우에 이 클래스의 객체를 생성하는 놈인 Student()를 이 책에서는 생성자라고 부르더라고요.
그런데 제가 구글링도 해보고 다른 책도 찾아보니 생성자는 특정 클래스의 객체를 생성하는 함수인 "Student()" 다르게 말하자면 "클래스명()" 이런 놈이 아니라
클래스 내에 정의되어 있는 __init__() 함수라고 하더라고요.
용어 사용에 혼동이 생겨서 이렇게 질문 드립니다.
특정 클래스의 객체를 생성하는 클래스명()(ex. Student()) 이 함수가 생성자인가요? 아니면 클래스 내에 정의되어 있는 __init__() 함수가 생성자인가요? 아니면 둘 다 생성자인가요?
좀 자세히 설명해주시면 감사하겠습니다.
PS 혼공파 책으로 파이썬 공부 정말 잘하고 있습니다 ^^
어떤 사람이 "집 안에서"는 "아빠"라고 불리지만, "집 밖에서"는 "윤 팀장"이라고 불릴 수 있는 것처럼
Student 클래스도 "집 안에서"는 "__init__()"이 생성자이고, "집 밖에서"는 "Student()"가 생성자입니다!
둘이 다른게 아니라 결국 같은 것입니다!
PS. 뭐 내부적으로 더 파고 들면
Student()를 호출하면 __new__()가 호출되며
__new__()에서 __init__()을 호출해서
__new__()가 정확한 의미의 생성자라고 할 수 있겠지만
이 함수는 우리가 직접 만지는 함수가 아니라서 __init__()을 생성자로 보는 편입니다.
@@윤인성 답변 정말 감사합니다 작가님!!!
이번 강의는 좋아요 10개는 찍고 싶은 내용입니다.
내용을 들으면서 데이터 입력을 리스트에서 클래스로 바꾸는 부분에서 '저걸 왜 복잡하게 저렇게 하지?'라고 중얼거렸는데, 바로 그 부분을 짚으셔서 뜨금했습니다.
실제로 활용하며 연습해야겠네요 ^ㅇ^
2024.09.15 오전 8시
쌤안녕하세요! 파이썬기본문법도 못끝내고 부트캠프만 두번째네요 수업 프로젝트 자격증 바빠서 못오다 큐ㅠㅠ다시왔:어요.. 코테가 취준에 중요하다고 그래서 혼공파 빨리 일회독하고 코테 준비 들어가려구요 !! 24.09.22
붙캠은 에이아이붙캠입니당ㅋㅋㅋ
화이팅입니다!!
@@윤인성 어제완강하고 코테책 보면서 코드업부터 풀고있어요 ㅋㅋㅋ 이제 쌤 못봐서 서운하네요 ㅠㅠ
안녕하세요 올려주신 영상 보고 혼자 공부하는데 정말 많은 도움이 되었습니다 혹시 c언어는 올리실 계획이 없으실까요 ?? 확인 후 답글 남겨주시면 정말정말 감사하겠습니다
제가 냈던 C 책이 대학교재라서 ;ㅇ; .... 강의를 따로 찍을 수 없습니다!
캡슐화가 왜 필요한건지 항상 궁금했는데 이런 맥락이었군요 감사합니다!!
안녕하세요. 파이썬 공부 중인 뉴비입니다. 언제나 영상 잘 보고 있습니다.
클래스를 처음 접하면서 개인적으로 햇갈리는 부분들이 있는데 이에 대해 질문하고 싶어 댓글 달았습니다.
Q1. class 학생리스트: 에서 def __init__(self): 부분에는 self.students = []가 작성되어 있는데, 학생리스트 클래스를 가진 객체를 생성하면 생성되는 객체마다 students라는 빈 리스트가 만들어지는 건가요?
Q2. class 학생리스트: 에서 def print(self): 부분의 for 반복문에는 student.print()가 작성되어 있는데, student.print()에서 print() 함수는 학생 클래스에 있는 print() 함수를 사용하는 건가요?
Q3. 질문2와 연계하여, 클래스를 생성할 때 함수를 만들면서, 객체뒤에 . 과 함께 함수명을 작성하는 것으로 함수를 사용하는 것을 자주 보는데, 새롭게 만든 클래스에 대해서 객체.함수명() 형태로 작성시 객체의 클래스를 스스로 판별하여 해당 클래스의 함수를 호출하는지도 궁금합니다.
Q4. 질문3과 연계하여, 문자열 부분에서 is~() 함수와 관련된 내용을 다룰 때, 함수 앞에 있는 객체의 타입이 문자열일 경우에만 작동되었는데, 혹여 모든 상황에 대해서 '.함수명()' 형태의 함수들은 . 앞에 있는 객체가 어떤 타입/클래스인지 스스로 판별하여 그 타입/클래스에 정의된 함수를 적용하는 건지도 궁금합니다.
클래스 관련 초반 설명(인스턴스 설명 부)에서 제가 이해할 수 있는게 생겨서 좋았습니다. 아무것도 모르는 상태에서 클래스와 '인스턴스는 붕어빵틀과 붕어빵 관계야' 라는 비유를 들으면 이해조차 시도할 수 없는 문제가 생겼으니 말이죠...
몇회 반복하지 않은 상태이지만 강의 중에 제가 이해할 수 없는 내용이나 익숙하지 않은 단어가 연달아 나오는 설명을 들을 때마다 제가 해야할 것이 정해지는 느낌입니다.
정말 많은 도움이 되고 있습니다. 감사합니다.
전부 맞습니다. 실제 동작은 "파이썬 매일 코딩"이라는 책에 좀 자세하게 나오는데
(1) 함수들은 클래스 이름으로 묶여 좀 다른 곳에 저장됩니다.
(2) . 연산자를 보면, 일단 "해당 클래스 이름으로 묶인 곳"에 가서 함수를 찾습니다.
(3) 그리고 함수를 호출합니다.
.
그래서 학생목록.print()와 학생.print()는 다른 함수를 호출합니다. 각각의 클래스가 가진 함수를 호출합니다.
@@윤인성 긴글이였는데 답변 감사드립니다. 궁금한 것에 대한 질문의 답을 이렇게 빨리 받을 수 있는 것도 그렇고... 감사합니다!
학생들 = [학생("인성"),87,88,98,95)...]
부분을 print(학생들) 하면 출력이 안되는데 이 학생들은 [{학생:인성,수학:12}] 이런식의 딕셔너리 형태로 저장되는건지 아니면 전혀 다른 형태로 저장되는건지 궁금합니다.
입력하신 전체 코드를 한 번 보여주실 수 있을까요!
명강의 감사드립니다
감사합니다
선생님 9분20초경에 더블클릭으로 vs code에서 텍스트 바꾸는 거는 무슨 단축키인가요? macOS 환경입니다!
더블클릭하면 식별자 전체가 선택됩니다.
그래서 Ctrl + C / Ctrl + V 하고 있는 것입니다!
코드가 짧고 + 어떤 부분을 변경하는지 조금 보이게 복붙을 사용한건데,
조금 더 좋은 방법은 변수/함수 식별자 하나 선택하고
F2 누르시면 이름을 변경하는 메뉴가 나옵니다.
여기에서 변경하면 관련된 식별자가 한꺼번에 바뀝니다.
@@윤인성 오 꿀팁 감사합니다^^
선생님 class StudentList: 의 끝부분에 있는 students.print()에서 TypeError가 나는데 왜 그럴까요?ㅠ
전체 코드를 올려주실 수 있을까요!
코딩을 현재 파이썬을 배우고 있는 상황입니다. 하지만 대학교 과 특성상 여러 코딩을 다루다 보니 여쭙고 싶은 내용이 있어 댓글 남깁니다. 코딩으로 매트랩, 파이썬, c,c++,아두이노 이렇게 배우고자 합니다. 배워야하는 입장이고요 ㅠ 모두 윈도우, mac 관련없이 잘 호환이 될까요?
추가적으로 3d모델링도 잘 아신다면 이거에 대해서도 여쭙고 싶네요.
정확하게 어떤 호환성을 묻고 계신 것인지
모르므로 호환성과 관련된 적절한 답을 드릴 수가 없습니다.
추가적으로 책의 내용과 관계없는 답변은 드리지 않고 있습니다!
[한 명 한 명 질문을 모두 받으면 끝이 없어서요 @_@ !]
class에는 왜 함수가 끝나고 return을 안붙이나요?
원래 함수로 return을 안 붙여도 됩니다. 필요한 경우만 사용해주시면 됩니다.
79강 강의영상이 빠진듯 합니다. 확인 좀 부탁 드립니다.
앗 재생목록에 추가를 안 했군요! 확인 감사드립니다!
@@윤인성회신 감사합니다. 올려주신 강의 +교재 열독 중입니다.
언빌리버블!