본문 바로가기
Python

0702 class

by 대금부는개발자 2021. 7. 2.
SMALL

 

 

class

 

 

1. (현실 세계의) 객체 (를 프로그램으로) 모델링의 수단

 

 

 

#학생(대학생)이라는 개념을 프로그램 적으로 모델링(묘사)를 해볼 거예요

사용자 정의 클래스

(프로그래머가 직접 정의하는 클래스는 첫 글자를 관용적으로 대문자로 적어요!)

 

프로그램적으로 묘사할 때 프로그램 적으로 필요한 상태 값 →

변수(property, 자바에서는 field, c++에서는 member variable 라 불러요. )

(학년, 학번, 재학/휴학, 학과, 학교, 주소, 이름...)

와 일련의 절차적 행위 → (method)

(수업을 듣다, 수강신청을 하다, 공부하다, 시험 보다)로 나눠요.

 

class Student(object):

 

def __init__(self, name, dept, num, grade):

# name, dept, num, grade는 local variable(지역변수)이고 stack에 임시저장

# instance variable은 어디에 저장되나요? => heap

self.name = name

self.dept = dept

self.num = num

self.grade = grade

 

stu1 = Student('홍길동','CS','990101',4.0)

stu2 = Student('박길동','철학','990102',3.5)

stu3 = Student('김길동','수학','990103',1.5)

 

# class를 기반으로 instance(object)를 생성

 

students = []

students.append(Student('홍길동','CS','990101',4.0))

a = 100

print(type(a))

# <class 'int'>

 

print(id(a))

# 140716390592000 Heap 영역에 만들어진 instance의 시작 주소

 

 

괄호 안을 상위 클래스로 생각하면 돼요.

일반적으로 4칸 들여 쓰기로 묶여있어요라고 표현해 줘요.

학생이라는 행위에 대한 def(함수)를 만들어요

클래스 내부에는 기본적으로 있어야 되는 몇몇 개의 대표 함수 중에 __init__이 있어요.

__init__은 특별한 일을 하도록 이미 지정이 돼 있는 함수에요

__init__다음 인자들의 나열이 나와요().

제일 먼저 나오는 인자들은 정해져 있어요 self라는 인자가 나와요.

그다음에 기본적인 (a, b, c, d) 함수가 필요로 하는 인자-파라 메타 변수(self, name, dept, num, grade)들이 뒤로 나와요.

그다음에는 클래스에 인스턴스에 실제로 할당이 되는 값(변수-instnace variable,property)이 나와요- self.

self 변수(property) 뒤에 실제 내가 사용할 변수명(property)을 적어요.

name, dept, num, grade는 함수에요

함수가 호출되면 스택이라는 메모리 영역에 공간이 잡히고 지역변수라고 불리는 함수에서 사용되는 변수들이 들어가요.

파라메타에 사용되는 변수도 local variabl(지역변수 안에 들어가요.

name dept num grade는 local variabl(지역변수)이고 stack(임시저장 공간) 영역에 임시저장(함수가 끝나면 stack 영역에 변수가 날아가기 때문에 임시저장)

self를 이용해서 property(변수)을 만들 수 있는데 그 뒤에 property의 이름을 지어줘야 해요.

그리고 __init__라는 함수가 호출됐을 때 파라메타를 받아서 가져온 값을 어떻게 만드냐?

property 다시 말해서 클래스 안에서 상태를 표현하기 위한 변수의 값을 할당을 할 수 있어요.

property 은 Heap 영역에 저장돼요 stack 은 임시저장

property 을 만드는데 파라메타로 받아오는 이 name이라는 local variabl(지역변수)의 값을 어싸인해요.

 

첫 번째 name 은사용자로부터 init라는 함수가 호출됐을 때 어떤 의미의 값을 받기 위함이라는 것을 표현하기 위해 쓴 것.

두 번째 name은 이 클래스로부터 local variable을 네임으로 쓸 거야라고 쓴 것.

 

자바에서 self는 this에요

class를 만든 다음에 class를 이용해야 해요.

class는 함수와 다르게 call 한다는 개념이 아니에요.

class 이름을 가지고 해당 class를 이용해요.

함수 호출이랑 비슷해 보여요

student() 안에 인자를 이용해 주는데 init이 가지고 있는 self를 제외한 나머지 것들이 인자로 들어와요.

해당 class로부터 instance가 파생돼요.

여기서 class(학생이라는 개념을 프로그램적으로 묘사)는 하나의 틀 묘사 수단이에요.

인스턴스는 클래스를 기반으로 해요. instance를 만들기 위해 클래스 사용

실제 프로그램에서 진짜 쓰는 것을 class 가 아님 instance에요.

프로그램에서 진짜 쓰는 것은 하나하나의 객체를 인스턴스(object) 생성해요.

class로부터 여러 개의 인스턴스를 파생시킬 수 있어요.

 

 

LIST

댓글