반응형
객체란 무엇인가?
객체란 - 메모리(주로 RAM)에 할당 된 것. 변수, 자료 구조, 함수 또는 메소드 등이 이에 해당한다.

method, class, static method 모두 object 이다.
class Animal:
# 클래스 속성 (클래스 변수)
kingdom = 'Animalia'
def __init__(self, name, species):
# 인스턴스 속성 (인스턴스 변수)
self.name = name
self.species = species
# 인스턴스 메소드
def describe(self):
return f'{self.name} is a {self.species}.'
# 클래스 메소드
@classmethod
def get_kingdom(cls):
return f'All animals belong to the {cls.kingdom} kingdom.'
# 정적 메소드
@staticmethod
def is_animal_living():
return 'All animals are living beings.'
# 클래스를 사용하여 인스턴스를 생성
dog = Animal(name='Buddy', species='Dog')
cat = Animal(name='Whiskers', species='Cat')
# 인스턴스 메소드 호출
print(dog.describe()) # Output: Buddy is a Dog.
print(cat.describe()) # Output: Whiskers is a Cat.
# 클래스 메소드 호출
print(Animal.get_kingdom()) # Output: All animals belong to the Animalia kingdom.
# 정적 메소드 호출
print(Animal.is_animal_living()) # Output: All animals are living beings.
- 클래스(Class)
- Animal은 클래스입니다. 클래스는 객체를 생성하기 위한 청사진입니다.
- 클래스는 클래스 속성(변수), 인스턴스 속성(변수), 메소드 등을 가질 수 있습니다.
- 인스턴스(Instance)
- dog와 cat은 Animal 클래스의 인스턴스입니다. 인스턴스는 클래스의 구체적인 객체입니다.
- 각 인스턴스는 name과 species라는 인스턴스 속성을 가집니다.
- 인스턴스 메소드(Instance Method)
- describe 메소드는 인스턴스 메소드입니다. 인스턴스 메소드는 첫 번째 매개변수로 항상 self를 받아야 하며, 이를 통해 인스턴스의 속성에 접근할 수 있습니다.
- dog.describe()와 같이 인스턴스를 통해 호출합니다.
- 클래스 메소드(Class Method)
- get_kingdom 메소드는 클래스 메소드입니다. 클래스 메소드는 첫 번째 매개변수로 항상 cls를 받아야 하며, 이를 통해 클래스 속성에 접근할 수 있습니다.
- Animal.get_kingdom()과 같이 클래스를 통해 호출합니다.
- 정적 메소드(Static Method)
- is_animal_living 메소드는 정적 메소드입니다. 정적 메소드는 self나 cls와 같은 특별한 첫 번째 매개변수를 받지 않으며, 클래스나 인스턴스의 속성에 접근할 필요가 없는 메소드를 정의할 때 사용합니다.
- Animal.is_animal_living()과 같이 클래스를 통해 호출합니다. 인스턴스를 통해서도 호출할 수 있습니다.
끝으로
python 예제를 통해서 object instance 메소드, class 메소드, static 메소드의 차이점을 알아 보았다. 클래스 안의 메소드를 구별하여 사용하는 방법은 데이터의 취급 범위를 정할 수 있기 때문에 좋은 코드를 짤 수 있게 된다.
반응형
'Computer-Programming > Python' 카테고리의 다른 글
데코레이터 패턴 그리고 python 데코레이터 (0) | 2024.07.10 |
---|