클래스 변수에 대한 설명입니다.
클래스 변수는 여러 인스턴스에서 공유할 수 있게끔 클래스 내에 변수를 두어 데이터를 저장한 것을 말합니다.
클래스 내부의 생성자나 메서드 외부에서 클래스 변수를 선언합니다.
class 클래스명:
변수명 = value # 클래스 변수 ( 모든 인스턴스에서 사용 가능, 프로그램 실행시 생성/종료시 삭제 )
def __init__(self, name): # name = 로컬 변수, 함수 호출시 생성/값반환시 삭제, Stack 저장
self.name = name # self.name = 인스턴스 변수, 객체 생성시 생성/소멸시 삭제, Heap에 저장
"""
클래스 변수 (class variable)
1. 목적 : 데이터 저장, 여러 인스턴스에서 공유 목적
2. 문법(Syntax) : 메서드 밖에서 선언
class 클래스명:
변수명 = value # 클래스 변수, 모든 인스턴스에서 사용 가능, 프로그램 실행시 생성됨됨
def __init__(self):
self.name = value # 인스턴스 변수
self.age = value
"""
class Person:
gender = "남" # gender : 클래스 변수 / (1) 프로그램 실행시 생성, 프로그램 종료시 삭제 / Method area(클래스 변수, 클래스 메서드 등 저장 ) <- 객체들과 공유
# 접근 방법 : 클래스명.클래스변수 / 객체 생성과 무관하게 사용 / 프로그램 실행시, 1번
def __init__(self, name): # name : 로컬변수 / (3) 함수 호출시 생성, 함수 반환시 삭제 / Stack 저장
# 함수 호출할 때마다 생성
self.name = name # self.name : 인스턴스 변수 / (2) 객체 생성시 생성, 객체 소멸시 삭제 (참조 불가 시) / heap 저장
# 접근 방법 : 내부 - self.변수 형식, 외부 - 객체명.변수 형식 / 객체 생성할 때마다 생성
def set_name(self, name):
self.name = name
# p = Person() # 객체 생성 # 인스턴스 변수 생성
# p = None # 객체 소멸 (참조 불가) # 인스턴스 변수 삭제
# p = Person("abc") # 객체 소멸 (참조 불가)
# 가장 먼저 생성되는 변수 = 클래스 변수 >> 인스턴스 변수 >> 로컬 변수
# 프로그램 실행 ==> 클래스 변수 생성
# p = Person() ==> 인스턴스 변수 생성
# p.set_anme("aaa") ==> 로컬 변수 생성
print(Person.gender) # 남 # 클래스 변수, 객체 생성 없이 접근 가능
p = Person("홍길동")
print(p.name) # 홍길동 # 인스턴스 변수, 반드시 객체생성 후, 참조변수.인스턴스변수 형식으로 접근
print("이름: {}, 성별:{}".format(p.name, Person.gender)) # 이름: 홍길동, 성별:남
p2 = Person("이순신")
print(p2.name) # 이순신
print("이름: {}, 성별:{}".format(p2.name, Person.gender)) # 이름: 이순신, 성별:남
반응형
'SK 행복성장캠퍼스 > Python 기초' 카테고리의 다른 글
0907_6일차_상속 (0) | 2020.09.07 |
---|---|
0907_6일차_클래스_클래스메서드 (0) | 2020.09.07 |
0907_6일차_클래스_메서드 (0) | 2020.09.07 |
0904_5일차_연습문제 (0) | 2020.09.07 |
0904_5일차_함수_클래스 (0) | 2020.09.07 |
댓글