클래스 정의
사용자가 새롭게 만드는 새로운 유형의 자료형
클래스 선언
클래스의 기본적인 형태는 이렇게 생겼다.
class 클래스 이름:
코드
코드
...
class Student:
코드
코드
...
Student는 자료형을 새롭게 만들어서 변수에 넣으려면 Student함수를 만들어 준다. 타입을 확인해보면 아래 __main__.Student가 뜨는데 해당 파일에서 만든 Student클래스 라는 뜻. (클래스의 이름은 항상 대문자로 시작)
해석을 해보면 메모리 공간 안에 Student라는 값의 공간이 생기고 주소가 생겼다고 가정한다면, 우리가 Student가 s1에 대입해서 사용을하게 되고, 이렇게 보면 s1의 주소가 Student의 주소를 알게되는데. type(s1)에서 s1이 알고 있는 Student의 타입 알려주세요 하면
Student타입이란걸 알려준다. 그 아래, s1.은 하위연산자로 (~안에있는) s1이 알고 있는 Student란 공간에 name이라는 변수를 만들어서 '김주희'라는 값을 대입해주라는 의미. 그럼 Student타입의 공간에 name이라는 변수와 '김주희'라는 이름의 값이 들어간다.
아래 age도 마찬가지 age라는 변수에 10이라는 값도 Student안에 들어가게 되는것.
또 하나의 객체를 만들어보면 똑같이 첫번째와 같은 과정을 거치고 Student( )라는 새로운 객체가 생긴다.(그림에서 오른쪽)
정의된 클래스를 실행을 해보면 에러가 뜬다 왜 에러가 뜨냐면 i was given 보내줬다는 뜻인데 s1가 위에 print( 매개변수)로 보내졌다는 뜻. 주소 역시 첫번째로 만든 Student( )를 의미한다. 그럼 정상적으로 실행을 시키려면 print( a)를 넣고 s1에 연결되게 해보자.
정상적으로 실행이 된걸 볼 수 있음.
여기서 두번째로 만든 Student( )를 실행하려면 아래 사진과 같이 s2.show( )를 추가해준다. 그럼 또 다른 주소가 생기는걸볼 수 있음.
여기서 알아야 할 점은 s1과 s2를 연결해서 보여주려면 첫번째 매개변수에는 어떤 객체가 함수를 사용했는지 알기 위해 그 객체를 받아온다.
보통은 self라고 이름을 지음.
학생정보 출력해줘라고 명령하면 s1안에 있는 name에 들어 있는 값 김주희이니까 김주희가 출력되고, s1안에 있는 들어있는 값 age출력해달라고 하면 10이 출력. 이렇게 여러개의 값을 한번에 객체에 담는게 가능해진다.
print('---학생정보---')
print(f'이름 : {s1.name}')
print(f'이름 : {s1.age}')
print('---학생정보---')
print(f'이름 : {s2.name}')
print(f'이름 : {s2.age}')
여기서 매번 학생 정보를 입력하는 수고를 더는 방법이 함수를 만드는 것.......
이름과 나이를 받아오려면
(a, b)
print(f'이름 : {a}') 이름은 a에 들어있고
print(f'나이 : {b}') 나이는 b에 들어 있음, 이렇게 출력.
def stInfo(a, b):
print('---학생정보---')
print(f'이름 : {a}')
print(f'나이 : {a}')
내가 출력하고 싶은 이름은 김주희인데 s1안에 있는 name에 들어있으니 s1.nam을 적어주고, 나이도 s1안에 있는 age에 들어있으니까
s1.age을 적어준다.
[Python-기초] 1-3. 가변매개변수 (0) | 2023.03.02 |
---|---|
[Python-기초] 상속 (0) | 2023.03.02 |
[Python-기초] 1-1. 함수 (0) | 2023.02.26 |
[Python-기초] 반복가능 객체(iterable) -세트 (1) | 2023.02.25 |
[Python-기초] 반복가능 객체(iterable) -딕셔너리 (0) | 2023.02.25 |
댓글 영역