정리노트

[파이썬/python] [클래스] 클래스변수 본문

프로그래밍/Python

[파이썬/python] [클래스] 클래스변수

Rolen 2022. 9. 28. 00:55

일반적으로 클래스 변수는 아래 두 가지의 상황에 사용한다.

1. 모든 객체에 하나의 변수와 그 안의 데이터를 일정하게 사용하고 싶을 때
(인스턴스 변수는 객체를 통하여 사용이 된다. 즉, 객체마다 인스턴스 변수의 값은 각기 다른 값을 다루게 된다.)
>> __init__ 메소드 밖 class 안에서 선언 <<

응용으로
몇 개의 객체가 생성되었는지 궁금하다면

클래스변수 = 0 선언. 초기화 하고
원하는 클래스 내부 메소드에
클래스변수 += 1 을 걸어두면된다.
(이처럼 생성되는 객체가 같은 변수를 통해 데이터를 공유할 수 있다)

class Dog:

    kind = "Bulldog"  # 클래스 변수 선언 > __init__ 메소드 밖 class 안에서 선언
    
    def __init__(self, name, age):
        self.name = name
        self.age = age

a = Dog("Del", 2)
b = Dog("Piero", 3)

print(a.kind)		# // Bulldog
print(b.kind)		# // Bulldog
print(Dog.kind)	#	// Bulldog

print(a.name)	#	// Del
print(b.name)	#	// Piero


2. 상수를 지정하고 싶을 때
>> __init__ 메소드 밖 class 안에서 선언 <<
대문자로 네이밍

class Dog:

    KIND = "Bulldog"  # 클래스 변수(상수 = 대문자) 선언 > __init__ 메소드 밖 class 안에서 선언
    
    def __init__(self, name, age):
        self.name = name
        self.age = age

a = Dog("Del", 2)
b = Dog("Piero", 3)

print(a.kind)		# // Bulldog
print(b.kind)		# // Bulldog
print(Dog.kind)	# // Bulldog

print(a.name)		# // Del
print(b.name)		# // Piero
728x90