파이썬 기초강의-5

DONNIE·2022년 11월 21일
0

파이썬

목록 보기
5/6

📌 클래스를 구성하는 변수와 함수

클래스 변수와 인스턴스 변수를 사용한 자동차 클래스

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를 선언해 정적메서드임을 명시
profile
후론트엔드 개발자

0개의 댓글