클래스, 객체, 생성자, 메소드
본문 바로가기
항해 중/알고 보면 알기 쉬운 알고리즘

클래스, 객체, 생성자, 메소드

by 은돌1113 2021. 11. 13.

👀 클래스란?

: 클래스는 분류, 집합과 같은 속성과 기능을 가진 객체를 총칭하는 개념이다.

 

👀 객체란?

: 세상에 존재하는 유일무이한 사물입니다.

 

예를 들어

클래스가 사람이라면, 객체는 유재석이 될 수도 있고, 박명수가 될 수도 있습니다.

클래스가 동물이라면, 객체는 강아지가 될 수도 있고, 고양이가 될 수도 있습니다.

 

이처럼 클래스를 이용하면 같은 속성과 기능을 가진 객체들을 묶어서 정의 할 수 있습니다.

class Person:
    pass # 여기서 pass 는 안에 아무런 내용이 없다는 의미입니다!


person_1 = Person()
print(person_1)  # <__main__.Person object at 0x1090c76d0>
# 클래스를 호출해서 person_1이라는 객체를 생성한다.
person_2 = Person()
print(person_2)  # <__main__.Person object at 0x1034354f0>
# 클래스를 호출해서 person_2이라는 객체를 생성한다.

 

👀 생성자란?

더보기

클래스에는 생성자(Constructor)라는 게 있는 데 객체를 생성 할 때 데이터를 넣어주거나, 내부적으로 원하는 행동을 실행 할 수 있습니다. 

 

파이썬에서는 생성자의 이름은 __init__으로 고정되어 있습니다.

무조건 생성자의 이름의 함수는 __init__입니다.

 

생성자는 생성 시에 호출되는 함수입니다. (즉, 클래스가 생성되고 호출 되면 실행되는 함수)

따라서, 아래차럼 Person을 생성하기만 해도 hihihi와 self가 동시에 출력 됩니다.

 

self는 객체 자기 자신을 가르킵니다.

따라서 파라미터를 따로 넣어줄 필요 없이 그냥 호출 하기만 하면 알아서 self에 자기 자신을 넣어 줍니다.

class Person:
    def __init__(self):
        print("hihihi", self)


person_1 = Person()  # hihihi <__main__.Person object at 0x1067e6d60> 이 출력됩니다!

person_2 = Person()  # hihihi <__main__.Person object at 0x106851550> 이 출력됩니다!

 

+ self를 사용하면 객체에 데이터를 쌓을 수 있습니다.

예를 들어 self.name에 param_name을 저장 해두겠다는 건 그 객체의 name이라는 변수에 저장된다는 의미입니다.

class Person:
    def __init__(self, param_name):
	print("hihihi", self)
        self.name = param_name


person_1 = Person("유재석")  # hihihi <__main__.Person object at 0x1067e6d60> 이 출력됩니다!
# 클래스를 호출 해서 객체를 생성한다.
print(person_1.name)  # 유재석

person_2 = Person("박명수")  # # hihihi <__main__.Person object at 0x106851550> 이 출력됩니다!
print(person_2.name)  # 박명수

 

👀 메소드란?

: 클래스 내부의 함수는 메소드(methodo)라고 부른다.

예를 들어 talk라는 메소드를 만들어 보면, 각 객체의 변수를 사용해서 메소드를 구현 할 수 있습니다.

class Person:
    def __init__(self, param_name):
        print("hihihi", self)
        self.name = param_name

    def talk(self):
        print("안녕하세요 저는", self.name, "입니다")


person_1 = Person("유재석")  # hihihi <__main__.Person object at 0x1067e6d60> 이 출력됩니다!
print(person_1.name)  # 유재석
person_1.talk()  # 안녕하세요 저는 유재석 입니다

person_2 = Person("박명수")  # # hihihi <__main__.Person object at 0x106851550> 이 출력됩니다!
print(person_2.name)  # 박명수
person_2.talk()  # 안녕하세요 저는 박명수 입니다

 

👉 이처럼 클래스를 이용하면 연관성 있는 데이터들을 클래스 내에서 관리 할 수 있으며, 다양한 객체들을 쉽게 생성 할 수 있습니다. (객체를 생성한다는 건 클래스를 호출 해서 person_1이나 person_2라는 객체를 생성하는 것을 말한다.)

댓글