본문 바로가기
TIL(Daily)

Tue/20/Sep/20-자료구조 알고리즘&클래스

by Hawie 2022. 9. 20.

오늘 배운 내용은 4 가지 이다

  1. 어레이와 링크드리스트에 대해 배우고 차이점.
  2. 이진 탐색의 효율성과 전제 조건..
  3. 재귀함수의 방법과 전제 조건.
  4. 클래스

 

솔직 1,2,3은 오늘 처음 배운 개념이라.

이해 하기도 힘이 들었다.

불행중 다행이도 전혀 이해 못 할 정도는 아니였고.

기본 적인 것은 이해 한거 같다.

앞으로 많이 보고 사용하면 서 익숙해지는 방법 뿐이라고 생각한다.

 

4.클래스 는 배운적 있고 앞으로 장고 하면서 많이 쓰고 필요 한 문법이라

여려가지 강의 보면서 공부를 했다.

일단 간략 하게 오늘 배운 내용에 대해 쓰도록 해보겠다.

 

클래스란?

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

 그러면, 객체는 뭘까요?

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

 

 즉, 예를 들면

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

객체는 강아지가 될수도 있고, 고양이가 될 수도 있다.

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

 


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> 이 출력됩니다!


클래스에는 생성자(Constructor)라는 게 있는데 객체를 생성할 때 데이터를 넣어주거나,

내부적으로 원하는 행동을 실행하게 할 수 있다!

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

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

생성자는 생성시에 호출되는 함수이다. 따라서,

위처럼 Person 을 생성하기만 해도 hihihi 와 self 가 동시에 출력이 됩니다.

self가 뭐냐구요? self 는 객체 자기 자신을 가리킨다.

따라서, 파라미터를 따로 넣어주실 필요가 없이

그냥 호출하시면 알아서 self에 자기자신을 넣어준다.

 

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)  # 박명수

 


Person 이라는 클래스에 함수를 한 번 추가해보도록하겠다. 참고로, 클래스 내부의 함수는 메소드(method) 라고 부른다.

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()  # 안녕하세요 저는 박명수 입니다

 


이처럼 클래스를 이용하면 연관성 있는 데이터들을 클래스 내에서 관리할 수 있으며, 다양한 객체들을 쉽게 생성할 수 있게 된다.

 

위와 같이 여러 예시를 보며 공부해 보았다.

아직 완벽하게 이해 하지는 못했지만 그래도 전 보다는 이해 하는 내용이 많아 진거 같다.

내일 한번더 파이썬 중요문법 들 과  다른 자료구조&알고리즘에 대해 공부 하겠다.

댓글