Computer-Programming/Python

객체 , 인스턴스, 클래스, 정적 메소드 (feat. python)

sila_kr 2024. 7. 10. 20:24
반응형

객체란 무엇인가?

 

객체란 - 메모리(주로 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 메소드의 차이점을 알아 보았다. 클래스 안의 메소드를 구별하여 사용하는 방법은 데이터의 취급 범위를 정할 수 있기 때문에 좋은 코드를 짤 수 있게 된다.

 

 

 

 

반응형