클래스 변수
> 클래스를 구현할 때 인스턴스마다 서로 다른 값을 가지는 경우에 인스턴스 변수 사용.
> 사람을 클래스로 구현한다고 가정하면 사람들의 이름, 나이, 주소 등과 같이
사람마다 다른 값을 가지는 것들을 인스턴스 변수로 저장.
> 이 때, 모든 인스턴스 변수들은 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('해외')
'[Python] 파이썬' 카테고리의 다른 글
[Python] 오버라이딩 및 예외처리 종류 (0) | 2022.09.10 |
---|---|
[Python] 파이썬 상속 (2) | 2022.09.09 |
[Python] 파이썬 클래스 구성 (0) | 2022.09.07 |
[Python] 파이썬 클래스와 객체 (0) | 2022.09.06 |
[Python] 파이썬 내장 함수 - 사용자 함수 (2) | 2022.09.05 |