Python Class #1

한지완·2024년 1월 27일
0

파이썬

목록 보기
13/14

Class의 정의

1. Class, 객체(Object)와 인스턴스(Instance)

고양이, 강아지, 물총새, 시베리아백호랑이... 등의 공통점은 무엇일까?
바로 동물이다. 우리는 애네를 동물에 모두 할당시킬 수 있다.
여기서 동물은 클래스(Class)라고 할 수 있고, 동물이라는 클래스에 할당된 애들을 객체(Object)라고 할 수 있다. 그리고 인스턴스(Instance)는 관계를 표현할 때 주로 사용된다. 예를 들어, "고양이는 동물의 인스턴스이다." 라고 표현을 할 수 있다.

2. Class를 사용하는 이유

Class는 하나의 큰 틀이다. 프로그래머들은 자신이 필요한 부분에 전에 설정해 놓았던 Class를 쉽게 재사용을 할 수 있다는 점을 이용한다.

그러면 "함수와 클래스는 뭐가 어떻게 다른가"에 대한 의문을 가지기 쉽다.
이 둘의 개념은 코드의 재사용성을 높혀준다는 장점을 가지고 있지만, 상태에 따른 차이가 확연히 나타난다.

클래스는 객체를 선언했을 때의 객체는 독립적이며, 하나의 객체를 다르게 설정해도 다를 객체에게 영향을 주지 않으므로 클래스로 객체를 선언하는 것은 매우 용이하다. 하지만 함수로 객체를 선언하여 상태를 변화하려면 다른 객체도 똑같이 재정의해야한다. 즉, 함수보다 클래스로 객체를 선언하는 것이 더 좋다고 할 수 있다.

에시를 들어보겠다.

지금부터 난 동물원에 있는 동물들을 옮겨야 한다.
동물원에는 'cat', 'dog', 'bird'가 있다.
이 중에서 고양이를 제외시켜야 한다. 그리고 코끼리를 데려와야한다.

먼저, 우리는 'Zoo'라는 클래스를 설정하여 동물들을 정의해야한다.
모든 모듈들은 반드시 뒤에 ':'이 뒤에 붙어야하므로 주의해서 코드를 작성해야 한다. 또한, __init__

class Zoo:

    def __init__(self,animals_list):
        self.animals_list = animals_list

    def __add_animals__(self,animals):
        self.animals_list.append(animals)
        print("{} at the Zoo".format(animals))

    def __sub_animals__(self,animals):
        self.animals_list.append(animals)
        print("{} needs to get out from the Zoo".format(animals))

animals = Zoo(['cat', 'dog', 'bird'])
        

print(animals.animals_list, 'are at the Zoo.(old)')
animals.__sub_animals__('cat')
animals.__add_animals__('elephant')
print(animals.animals_list, 'are at the Zoo.(New)')
profile
프로그래머를 꿈꾸는 중

0개의 댓글