인프런 커뮤니티 질문&답변

이동현님의 프로필 이미지
이동현

작성한 질문수

초보자도 간단히 단숨에 배우는 파이썬 프로그래밍

클래스를 만들어 보자

__init__()함수 여러번 사용과 자바와의 차이점

작성

·

401

2

안녕하세요. __init__ 함수와 자바와의 차이점에 대해 질문이 있습니다.

1. 파이썬에서 class를 생성할 때 __init__함수를 한번에 여러번 사용할 수도 있나요?

2. 자바에서는 예를들어 클래스(ReaderBook)를 생성하고 객체를 생성할 때 ReaderBook member1 = new ReaderBook(); 이라는 방식으로 생성하는데 이 방식이 파이썬에서 선생님이 self를 이용하여 만든 두번째 방식과 동일한건가요? 자바에서의 인스턴스변수와 약간 헷갈립니다.

감사합니다.

답변 1

1

좋은 질문 감사드립니다.

답변 드리겠습니다.

1. 파이썬에서 class를 생성할 때 __init__함수를 한번에 여러번 사용할 수도 있나요?

아마 자바에서 인수 개수를 다르게 하여 여러 생성자를 작성하는 메서드 오버로딩(overloading)을 생각하고 계시는 듯 한데요. 파이썬에는 이런 개념이 없습니다.

다만, 자바와는 다르게 인수를 선택적으로 입력한다던지, 기본값을 지정한다던지 하는 방식을 사용하면 유사하게 구현할 수는 있습니다.

2. 자바에서는 예를들어 클래스(ReaderBook)를 생성하고 객체를 생성할 때 ReaderBook member1 = new ReaderBook(); 이라는 방식으로 생성하는데 이 방식이 파이썬에서 선생님이 self를 이용하여 만든 두번째 방식과 동일한건가요? 자바에서의 인스턴스변수와 약간 헷갈립니다.

질문이 약간 이해가 안되기는 하는데요.

굳이 자바와 비교하시려면, 클래스 정의문 안에서 this를 사용하듯이, 파이썬에서는 self를 메서드 첫번째 인수로 넣고 사용하는 개념입니다. 

질문에서와 같이 자바로 객체를 만드시면, member1 변수에 생성된 객체가 대입되겠죠. 이 변수와 인스턴스 변수와는 다른 개념입니다. 파이썬의 인스턴스 변수는 클래스 안에서 __init__() 메서드 안에서 생성할 수 있는 일종의 지역 변수인 개념입니다.

답변이 되었나요?

이동현님의 프로필 이미지
이동현
질문자

감사합니다!

이동현님의 프로필 이미지
이동현

작성한 질문수

질문하기