본문 바로가기
SK 행복성장캠퍼스/Python 기초

0907_6일차_클래스변수

by NickNuma 2020. 9. 7.

클래스 변수에 대한 설명입니다.

 


클래스 변수는 여러 인스턴스에서 공유할 수 있게끔 클래스 내에 변수를 두어 데이터를 저장한 것을 말합니다.
클래스 내부의 생성자나 메서드 외부에서 클래스 변수를 선언합니다.
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

댓글