[Python] 파이썬

[Python] 파이썬 클래스 구성_2

ITsubin 2022. 9. 8. 20:22

클래스 변수

> 클래스를 구현할 때 인스턴스마다 서로 다른 값을 가지는 경우에 인스턴스 변수 사용.

> 사람을 클래스로 구현한다고 가정하면 사람들의 이름, 나이, 주소 등과 같이

   사람마다 다른 값을 가지는 것들을 인스턴스 변수로 저장.

> 이 때, 모든 인스턴스 변수들은 self 키워드를 붙여 사용.

 

class Korean:
	country = '한국'

	def __init__(self, name, age, address):
		self.name = name
		self.age = age
		self.address = address
man = Korean('홍길동', 35, '서울')
print(man.name)
print(man.age)
print(Korean.country)

 

클래스 메소드

> 클래스 메소드란 클래스 변수를 사용하는 메소드.

> 특징은 아래와 같다.

  • 인스턴스 or 클래스로 호출
  • 생성된 인스턴스가 없어도 호출
  • @classmethod decorator(데코레이터)를 표시하고 작성
  • 매개변수 self가 아닌 cls를 사용

> 클래스 메소드는 인스턴스를 통해 호출하지 않고 클래스. 메소드()와 같은 형식으로 호출.

> 클래스 메소드는 self를 사용하지 않기에 인스턴스 변수에 접근할 수 없지만, cls를 통해 클래스 변수로는 접근 가능.

class Korean:
	country = '한국'

	@classmethod
	def trip(cls, country):
		if cls.country == country:
			print('국내여행')
		else:
			print('국외여행')
Korean.trip('한국')
Korean.trip('미국')

a = Korean()
a.trip('한국')

 

정적 메소드

> 정적 메소드 역시 self를 사용하지 않음. 따라서 인스턴스 변수 사용 불가.

> 인스턴스를 생성하지 않아도 사용할 수 있는 메소드라는 점에서 클래스 메소드와 유사.

> 정적 메소드의 주요 특징은 아래와 같음.

  • 인스턴스 또는 클래스로 호출
  • 생성된 인스턴스가 없어도 호출 가능
  • @staticmethod 데코레이터를 표시하고 작성
  • 반드시 작성해야 할 매개변수가 없음

> 정적 메소드는 self와 cls 모두 사용하지 않음.

> 인스턴스 변수와 클래스 변수 모두 사용하지 않는 메소드를 정의하는 경우에 적절.

> 정적 메소드는 클래스에 소속되어 있지만, 인스턴스와 영향을 주고받지 않음.

class Korean:
	@staticmethod
	def trip(country):
		print(f'{country}여행')
        
Korean.trip('유럽')
def trip(country):
	print(f'{country}여행')
    
trip('해외')