6일차. 마지막, 첫 번째는 클래스의 메서드에 대한 설명입니다.
일단 클래스의 메서드(method)란,
클래스 내에 존재하는 하나의 함수라고 생각할 수 있습니다.
클래스 내에서 함수처럼 하나의 기능을 담당합니다.
함수 생성과 마찬가지로 def로 시작합니다.
def 메서드명(self)
문장
"""
메서드 (method)
1. 용도 : 함수처럼 기능적인 처리 담당
클래스 내에서 선언된 함수이다. ( 클래스 밖에서 선언된 함수 = 함수(function) )
2. 문법(Syntax) :
def 메서드명(self):
문장
* 메서드명은 임의로 지정할 수 있다.
"""
class를 생성하면 우선, 생성자(def __init__(self):)를 만들고 --> 인스턴스 변수 초기화 역할
클래스의 기능 역할을 하는 메서드를 생성합니다.
(기본 setter와 getter 메서드 생성, def set_variable(self):, def get_variable(self):) --> variable을 수정하고 값을 반환하는 메서드
class Pet:
# 생성자 (생성자 함수) : 인스턴스 변수 초기화 역할
def __init__(self, a): # a = 로컬 변수 # 로컬 변수 (임시 변수) => stack 저장 -> LIFO -> 사용 끝 -> 데이터 삭제
self.age = a # self.age = 인스턴스 변수
# 객체 변수 / 인스턴스 변수 => heap 메모리에 저장 => 아무도 참조하지 않을때 힙에서 삭제
# 메서드 : self.age를 수정하는 메서드 # heap => 사용이 끝났을 때 사라지는 것 x, 더 이상 참조되지 않을 때 -> 가비지 컬렉터가 삭제
def set_age(self, a): # setter 메서드
self.age = a
def get_age(self): # getter 메서드
return self.age
p = Pet(2)
#인스턴스 선언
print("현재 pet 나이 : ", p.age, p.get_age()) # 현재 pet 나이 : 2 2 # __init__ 생성자로 인스턴스 선언하면서 초기값 반환
#나이 수정 코드 추가
#setter 메서드 호출
p.set_age(3) #__init__ 생성자로 초기화된 인스턴스 변수의 값을 수정함
# 메서드 호출시 해당 변수 stack에 저장 # stack의 변수는 인스턴스 변수에 저장되는데 이때는 힙 메모리에 저장
print("내년 pet 나이 : ", p.age, p.get_age()) # 내년 pet 나이 : 3 3 # 인스턴스에서 값이 반환되면 stack 내 메모리는 저장 (임시 메모리)
로컬 변수는 임시 변수로서 Stack에 저장되어 사용이 끝나면 데이터가 삭제됩니다.
self.variable로 표현되는 인스턴스 변수(객체 변수)는 Heap 메모리에 저장됩니다. 더 이상 참조되지 않을 때, 새로운 인스턴트가 선언될 때 --> 가비지 컬렉터에 의해 삭제됩니다.
# 인스턴스가 제거되는 시점
# 가. none 지정
# p = Pet(3) 변수 P --> Pet(3)
# p = None 변수 P --> None // Pet(3) 인스턴스, 힙 메모리에서 삭제제
#나. 새새로운 인스턴스 저
# p = Pet(3) 변수 P --> Pet(3)
# p = Pet(4) 변수 P --> Pet(4) // Pet(3) 인스턴스, 힙 메모리에서 삭제
대~충 기본적인 class의 구조입니다.
class 내에 생성자와 setter.getter 메서드가 존재합니다.
class Student:
def __init__(self, name, age, region): # name, age, region-> 로컬변수 -> stack 저장
self.name = name # self.name -> 인스턴스 변수 -> heap 저장
self.age = age
self.region = region
def set_name(self, name): # setter 메서드
self.name = name
def get_name(self): # getter 메서드
return self.name
def set_age(self, age):
self.age = age
def get_age(self):
return self.age
def set_region(self, region):
self.region = region
def get_region(self):
return self.region
person = Student("홍길동", 20, "서울")
print("학생 1의 이름 : {}, 학생 1의 나이 : {}, 학생 1의 주소 : {}".format(person.name, person.age, person.region))
person2 = Student("이순신", 45, "전라")
print("학생 2의 이름 : {}, 학생 2의 나이 : {}, 학생 2의 주소 : {}".format(person.name, person.age, person.region))
주중에는 간단하게 설명을 하고 주말에 복습겸 다듬도록 하겠습니다.
그럼 이만~
반응형
'SK 행복성장캠퍼스 > Python 기초' 카테고리의 다른 글
0907_6일차_클래스_클래스메서드 (0) | 2020.09.07 |
---|---|
0907_6일차_클래스변수 (0) | 2020.09.07 |
0904_5일차_연습문제 (0) | 2020.09.07 |
0904_5일차_함수_클래스 (0) | 2020.09.07 |
0904_5일차_함수_유틸리티 함수 (0) | 2020.09.07 |
댓글