📌 클래스를 구성하는 변수와 함수
클래스 변수와 인스턴스 변수를 사용한 자동차 클래스
class Car() :
instance_count = 0 # 함수보다 윗단에 변수를 선언하면 클래스 변수가 선언됨
# 객체에 따라 값이 바뀌는게 아니라 전체 객체가 공유하는 변수로 값이 보존됨
def __init__(self, size, color) :
self.size = size
self.color = color
Car.instance_count = Car.instance_count+1 # 클래스내에서 클래스변수를 사용할때도 클래스를 명시해줘야함
print("자동차 클래스로 만든 객체의 수 : ", Car.instance_count)
def move(self) :
print("{1}색 {0} 자동차가 움직입니다.".format(self.dize, self.color))
myCar = Car('작은','흰')
yourCar = Car('큰','검정')
# printed 자동차 클래스로 만든 객체의 수 : 1
# printed 자동차 클래스로 만든 객채의 수 : 2
- 이름이 같은 클래스변수와 인스턴스변수가 정의되었더라도 인스턴스변수는 self.name으로 호출하기때문에 혼동되지 않음
클래스에서 사용하는 함수
- 기능과 사용법에 따라 인스턴스 메서드, 정적 메서드, 클래스 메서드로 구분된다.
인스턴스 메서드
- 각 객체에서 개별적으로 동작하는 함수를 만들고자 할 때 사용
- 함수를 정의할 때 첫 인자로 self가 필요
- 인스턴스 메서드 안에서는 seld.function_name() 형식으로 클래스내의 다른 함수 사용 가능
- 인스턴스 메서드의 구조 : 함수앞에 slef.function_name()이면 다
class anotherCar() :
instance_count = 0
def __init__(self, size, color, instance_count) :
self.size = size
self.color = color
self.instance_count = instance_count
anotherCar.instance_count = Car.instance_count+1
print("자동차 클래스로 만든 객체의 수 :",anotherCar.instacne_count)
def move(self, speed):
self.speed = speed
print('{1}색 {0} 자동차가 움직입니다.'.format(self.size, slef.color))
myCar = Car('작은','흰')
yourCar = Car('큰','검정')
# printed 자동차 클래스로 만든 객체의 수 : 1
# printed 자동차 클래스로 만든 객체의 수 : 2
//
//
print(Car.instacne_count)
print(myCar.instance_count)
print(yourCar.instance_count)
# printed 2
# printed 2 이렇게 출력 가능하지만, 클래스 변수인지 인스턴스 변수인지 헷갈리므로 지양
# printed 2 이렇게 출력 가능하지만, 클래스 변수인지 인스턴스 변수인지 헷갈리므로 지양
정적메서드
- 클래스와 관련이 있어서 클래스안에 두기는 하지만 클래스나 클래스의 인스턴스와 무관하게 동작하는 함수를 만들고 싶을 때 사용
- 함수를 정의할 때 self.function_name()을 사용하지 않으며 정적메서드안에서는 클래스메서드에 접근은 가능하나 사용하지 않는게 좋음
- 함수앞에 데코레이터인 @staticmethod를 선언해 정적메서드임을 명시