본문 바로가기
TIL

[TIL] 2025.01.13(월) - python 학습

by 요호유후 2025. 1. 24.
반응형

 

금일 학습사항

1. 객체와 클래스 선언하기
2. 생성자와 메서드
3. 인스턴스와 특수메서드
4. 클래스 변수와 메서드
5. 프라이빗 변수
6. 상속

 

각 학습별 상세내용

1. 객체와 클래스 선언하기

객체지향 프로그램이란?

▶ 클래스 기반의 객체를 우선으로 생각하는 프로그래밍이다.

Java, Pyhotn, PHP 등이 있다.

 

객체란?

 구현하고자 하는 대상의 속성과 기능을 가지는 프로그램 단위를 말한다.

사람을 객체로 예를 들자면)

- 속성 : 눈, 코, 입, 키, 몸무게, 성격 등
- 기능 : 다리를 이용해 걷기, 물건을 잡을 때는 손가락 이용하기 등

 

추상화 : 객체를 구성하고 있는 속성이 많은 경우 필요한 속성만을 이용한 객체의 표현

프로그래밍 언어에서는 속성을 가질 수 있는 모든 것을 객체라 한다.

클래스도 객체가 될 수 있고 하나의 변수도 객체가 될 수 있다.

예) students의 변수가 각각의 dict를 속성으로 가지고 있기에 students 변수도 객체라 할 수 있다.

students = [
     {"name" : "김철수", "python": 4, "database" : 3},
     {"name" : "최유리", "python": 3, "database" : 4},
     {"name" : "신짱구", "python": 4, "database" : 5}
]  

 

이렇게 객체와 관련 코드를 분리할 수 있게 하는 것이 객체 지향 프로그램의 핵심이다.

 

클래스

객체 지향 프로그램을 반복적으로 만들다보니 이러한 구조를 자동으로 만들어줄 무언가 필요했는데 그것이 클.래.스

 클래스 선언 구조

class ClassName:
    클래스 내용

* 클래스 이름의 앞글자는 무조건 대문자 → 개발자들만의 약속임 (개발자by개발자)

 

  클래스 이름과 같은 함수(생성자)를 사용해서 객체를 만든다.

  여기서 프로그래밍 언어로 함수(생성자)로 생성된 객체를 인스턴스라고 한다.

class ClassName:
    pass

a = ClassName() ← 생성자 함수

 

★ 따로 정리해보기

- 객체란 무엇인가요?
- 객체를 구성하는 속성과 기능에 대해 설명해주세요.
- 추상화에 대해 설명해주세요.
- 객체 지향 프로그램에 대해 설명해주세요.
- 클래스를 선언하는 구조에 대해 설명해주세요.
- 인스턴스에 대해 설명해주세요.

 

2. 생성자와 메서드

생성자

 클래스의 이름과 같은 함수를 생성자라고 한다.

class 클래스이름:
    def __init__(self, arg1):
        pass

* __init__ 함수 : 초기값 설정해주는 함수라고 생각하면 될 듯
* self : self 말고 다른 단어를 사용해도 됨, 그냥 개발자들끼리의 약속으로서 self 라고 사용하는 것
            (클래스 자기 자신을 일컫기도 해서...)

 

메서드

class 클래스이름:
    def 메서드이름(self, arg1):
        pass

 

3. 인스턴스와 특수메서드

인스턴스

클래스로부터 생성된 객체를 인스턴스라 한다.

* isinstance() 함수
  - 해당 객체의 클래스 정보를 확인할 수 있다.
      · 개발 규모가 커지면 다양한 클래스가 존재할 수 있다.
      · 이때, 어떤 클래스에서 생성된 인스턴스(객체)인지 확인하기 어려울 때가 있다. 
      ·  이럴때 사용된다.

  - 사용법   
      ·  isinstance(인스턴스명, 클래스명) → True, False로 반환
         (두 번째 매개변수인 클래스 기반으로 인스턴스가 생성되었는지의 유무를 반환한다.)

 

특수 메서드

 클래스 생성 시 기본적으로 제공해주는 메서드들

__xxxx__() 이러한 형태를 하고 있다.

 

★ 따로 정리해보기 

- 특수메서드

 

4. 클래스 변수와 메서드

클래스데코레이터

함수 데코레이터와 개념, 정의는 동일하다.

선언)
class 클래스이름:
    @classmethod
    def 함수이름(클래스명, 매개변수):
        pass

호출)
클래스이름.함수이름(매개변수)

 

5. 프라이빗 변수

프라이빗변수

외부에서 내부의 값을 변경할 수 없도록 하는 것

클래스 내부에서 실제 사용되는 변수명 앞에 __(언더바 2개)를 붙여준다.

프라이빗 변수

 

6. 상속

상속

부모 클래스 기반으로 생성한 클래스를 자식 클래스라고 부르며, 이 과정을 상속이라 한다.

class Parents:
    pass

class Children(Parents):   ← Parents 클래스를 상속받음
    pass

 

▶ 자식클래스는 부모클래스의 속성 및 기능을 사용할 수 있으며, 추가/변경도 가능하다.

다중상속 : 여러 클래스를 상속받아 원하는 속성 또는 기능을 사용하는 것이다.

 

반응형

댓글