파이썬공부 12 클래스, __init__, 멤버변수, 메소드, Self
클래스는 여러 변수들을 묶어서 한 번에 관리할 수도 있고 클래스안에 어떤 기능을 하는 함수와 같은 걸 만들어서
동작 하도록 할 수도 있다. 클래스는 한가지로 여러가지 'object' 객체를 만들수 있다.
이 각 각의 object는 이 클래스의 '인스턴스(instance)'라고 표현한다
클래스 = 설계도 + 설명도
클래스
>>
변수도 여러가지 가질 수 있고, 함수도 여러가지 가질 수 있다
특정 객체에 별도의 변수를 따로 추가하게 되면 해당 객체만 추가되고 다른 객체에는 영향이 없다
__init__함수 내에서 self.name = name과 같이 정의되는 변수를 멤버변수라고 한다
서로 다른 두 객체의 멤버 변수는 서로 다른 값을 가질 수 있다
멤버 변수는 없을 수도 있고 여러 개가 있을 수도 있다
ex)
>>파이썬
init
>> def__init__(self, name, price)
ex)
class BlackBox: #클래스명은 대문자로 시작
>>파이썬 100,000원
ex2) b2를 추가 했을때
class BlackBox: #클래스명은 대문자로 시작
>>
파이썬 100,000원
자바 100,000원
BlackBox클래스 =
변수1 : name 변수2 : price
b1객체
name:'파이썬' 100,000원
b2객체
name:'자바' 100,000원
멤버변수
위 예제중 self.name 과 self.price 를 '멤버 변수'(클래스 객체마다 서로 다른값을 가질 수 있다)라 한다
만약, 위 예제중 b1객체에만 추가로 정보를 주고 싶다면
이렇게 추가로 옵션을 넣으면되고, 이 값은 b2와는 관계없다
메소드(Method)
클래스내에 선언되는 함수
추가적으로 '기능'을 추가하고 싶을때 이를 응용할 수 있다
ex)
>>여행모드ON
ex1) 지정한 시간동안만 추가 추가 기능이 실행하도록 설정하고 싶으면
>>30분 동안 여행모드ON
ex)
>>my name is Python and 10 years old
ex)
>> # 'self'는 객체 자기 자신이다, BlackBox클래스의 메소드를 호출하면서 '전달값', '객체'를 다 지정 해줘도 되지만,
b1객체를 통해 메소드를 호출하면서 나머지 전달값들만 지정해주면 된다
Python 10분 동안 여행모드ON
Java 10분 동안 여행모드ON
>> 클래스 메소드를 정의할 때
SElF
*self는 객체 자기 자신을 의미
* 메소드를 정의할 때 처음 전달값은 반드시 self
* 메소드 내에서는 self.name과 같은 형태로 멤버변수를 사용
* 객체를 통해 메소드를 호출할 때 self부분에 전달값은 따로 명시하지 않는다