__init__은 인스턴스가 클래스를 호출하면 자동으로 실행되는 메소드라고 하셨는데 이 메소드 안에서 정의되는 인스턴스변수(즉 self.xxxx 형식)들은 전역변수와 비슷한 성질이 있는것같네요. 그 메소드만에서만 사용가능한것이 아니라 한 인스턴스가 호출한 클래스전체에서 사용할수있다는점에서 전역변수와 비슷한것같습니다.
인스턴스는 객체라는 용어와 거의(?) 비슷합니다. 어떤 점에서 차이가 나는가 하면 객체라는 용어는 좀 폭넓게 사용되는 반면 인스턴스는 조금 제한적으로 사용합니다. 즉 이 강의 2:00 이후 내용에서 "person은 Human 클래스의 인스턴스이다." 와 같이 인스턴스라는 용어를 조금 한정적으로 사용하면 맞는 표현이라고 볼 수 있습니다. 정리를 하면 "person 객체를 생생했다"는 말은 맞습니다. 하지만 "person 인스턴스를 생성했다"라는 말보다는 "person이라는 Human 클래스의 인스턴스를 생성했다"라고 하는 것이 **더** 정확하게 맞습니다. 그리고 객체는 자료값(내용)을 가지므로 메모리를 할당 받아야 합니다. 여기서는 person 객체가 "수지", 23이라는 값을 가지는 것이지요. 이를 위해서는 Human("수지", 23)과 같은 방법으로 객체를 만들어야 하는데 이 문장을 수행하면 내부적으로 자동으로 __init__() 이라는 초기화 메소드(혹은 생성자)가 호출되게 됩니다. "Human 클래스의 인스턴스를 생성할 때 __init__() 함수는 자동으로 호출되다" 말의 의미는 이것입니다.
아 네~~ __str__() 함수는 특별한 기능이 있는데 바로 print(person)과 같이 print() 함수의 인자로 객체가 넘어가면 자동으로 호출되는 기능이 있습니다. 그래서 객체를 어떻게 출력할지 문자열로 반환하는 기능만 넣어주변 별도의 설정없이 호출 됩니다. 정리하면 print(person)은 print(person.__str__()) 와 동일합니다.
유료강의 듣다가 혼자서 계속 인스턴스가 어떻고 메소드가 어쩌고 중얼중얼 하길래 하나도 못알아듣겠어서 이리 왔는데 진짜 다 이해했습니다 하 감사합니다 ㅠㅠ
도움이 되셨다니 다행입니다. 저도 많은 책이나 강의을 보고 듣다보니 강사님들도 이 개념을 잘 모르는 분들이 있어군요.
아무래도 정확한 개념을 잡고 정확한 용어를 사용해야만 개발자 간의 의사소통이 더 잘 될 것 같습니다. ^^
몇수앞을 내다보신 비대면강의 ㅠㅠ
벌써 3년 전이네요.
공부를 목적으로 유튜브 영상을 만들다가 파이썬 책도 내고 데이터 과학 강의까지 하게 되었습니다.
모두다 구독자님의 관심 덕분이지요~~
__init__은 인스턴스가 클래스를 호출하면 자동으로 실행되는 메소드라고 하셨는데
이 메소드 안에서 정의되는 인스턴스변수(즉 self.xxxx 형식)들은 전역변수와 비슷한 성질이 있는것같네요.
그 메소드만에서만 사용가능한것이 아니라 한 인스턴스가 호출한 클래스전체에서 사용할수있다는점에서
전역변수와 비슷한것같습니다.
안녕하세요! 질문이 있어요. 혹시 인스턴스를 생성했다는 말을 이해하려면 어떤식으로 이해하는게 좋을까요?? 객체생성이랑 같은 말인가요??? 인스턴스 생성시 __init__ 자동 호출이라는 말이 잘 이해가 안돼요 ㅠㅠ
인스턴스는 객체라는 용어와 거의(?) 비슷합니다. 어떤 점에서 차이가 나는가 하면 객체라는 용어는 좀 폭넓게 사용되는 반면 인스턴스는 조금 제한적으로 사용합니다.
즉 이 강의 2:00 이후 내용에서 "person은 Human 클래스의 인스턴스이다." 와 같이 인스턴스라는 용어를 조금 한정적으로 사용하면 맞는 표현이라고 볼 수 있습니다.
정리를 하면 "person 객체를 생생했다"는 말은 맞습니다. 하지만 "person 인스턴스를 생성했다"라는 말보다는 "person이라는 Human 클래스의 인스턴스를 생성했다"라고 하는 것이 **더** 정확하게 맞습니다.
그리고 객체는 자료값(내용)을 가지므로 메모리를 할당 받아야 합니다. 여기서는 person 객체가 "수지", 23이라는 값을 가지는 것이지요. 이를 위해서는 Human("수지", 23)과 같은 방법으로 객체를 만들어야 하는데 이 문장을 수행하면 내부적으로 자동으로 __init__() 이라는 초기화 메소드(혹은 생성자)가 호출되게 됩니다. "Human 클래스의 인스턴스를 생성할 때 __init__() 함수는 자동으로 호출되다" 말의 의미는 이것입니다.
@@dongupak 감사합니다~~~
출석입니다.
안녕하세요 질문있습니다 print(person)을 했을때 지금 __str__이라고 정의한 함수를 쓰지않았는데 어떻게 영희(몸무게 44kg)이 출력이 되는건가요..?
아 네~~ __str__() 함수는 특별한 기능이 있는데 바로 print(person)과 같이 print() 함수의 인자로 객체가 넘어가면 자동으로 호출되는 기능이 있습니다. 그래서 객체를 어떻게 출력할지 문자열로 반환하는 기능만 넣어주변 별도의 설정없이 호출 됩니다. 정리하면 print(person)은 print(person.__str__()) 와 동일합니다.
그리고 __str__() 함수가 없을 경우 print(person)은 person객체의 타입과 아이디 값을 16진수로 출력합니다.