Python - class1(객체 지향을 지원한다)

컴퓨터/Python

728x90
반응형

객체 지향을 지원하는 Python 

파이썬 언어도 다른 많은 고급언어들과 같이 객체(Object) 지향 방식의 프로그래밍을 지원합니다.

이 객체지향적 프로그래밍을 통해 더 시각화된 프로그래밍을 할 수 있습니다.

class 키워드를 통해 객체를 생성하기 위한 틀을 만들며 이 안에 속성 값(properties)과 메서드(method)를 만들 수 있습니다.

그다음, 만들어진 틀을 이용해서 객체(Object)를 생성하여 사용할 수 있습니다.

 

class 만들기

class 키워드를 이용하여 객체의 틀을 만들 수 있습니다. 

이 객체에는 속성과 메서드라는 두 가지의 개념이 들어갈 수 있습니다.

  • 속성(Properties) : class 안에 특정 변수를 포함할 수 있습니다.
  • 메서드(Method) : class 안에 특정 함수를 포함할 수 있습니다.

그렇다면, class 키워드를 통해 class를 만드는 예제를 보도록 하겠습니다.

 

# 아무것도 없는 class
class Human:
    pass

# 속성값이 있는 class
class Man:
    age = 20

# 메서드가 있는 class
class Woman :
    def Say(self):
        print("안녕하세요 저는 Woman입니다.")

예제처럼 다양한 형태로 객체를 만들기 위한 틀을 정의할 수 있습니다.

 

Object 만들기

class를 만들어서 객체를 대량으로 생산할 준비가 완료되었습니다. 이제 실제 객체를 생성해보고 사용해 보도록 하겠습니다.

객체를 생성하기 위해서는 class 명을 호출하여 객체를 생성합니다.

 

  • 빈 객체를 여러 개 생성하여 각각의 의미 부여를 해봅시다.
#빈 클래스를 통해서 여러 객체를 생성해 봅시다.

사람1 = Human()
사람2 = Human()
사람3 = Human()

이렇게 만들어진 객체들은 동일한 틀을 통해 생성되었지만 하나하나씩 다른 존재입니다. 

 

  • 속성 값이 있는 객체를 생성하고 속성 값을 접근 및 수정해 보도록 합시다.
#속성 값 이용해보기
남자1 = Man()
print(남자1.age)
남자1.age = 30
print(남자1.age)

생성된 객체에서 속성 값에 접근하기 위해서는 예제처럼 객체명. 속성명을 통해 접근할 수 있습니다. 수정 또한 가능합니다.

 

  • 메서드 값이 있는 객체를 생성하고 메서드를 호출해 보도록 합시다.
#객체 생성 및 메서드 호출
여자1 = Woman()
여자1.Say()

예제처럼 객체를 생성하고 메서드 또한 속성과 같이. 을 통해서 접근하여 사용할 수 있습니다.

 

생성자 - __init__을 정의하고 조금 더 효율적인 틀을 만들어 봅시다.

위 내용에서 우리가 class 통해 만든 틀을 이용해 각각의 독립된 객체를 만들 수 있습니다.

예제의 내용처럼 Man이라는 클래스를 통해 각각의 객체를 만든다 가정해 봅시다. 

위의 예제처럼 class를 정의하였다면 생성하면 age = 20의 Man객체가 생성될 것입니다. 

각각의 Man객체의 나이가 다르다면 일일이 접근하여 수정을 해 주어야만 합니다.

#다시한번 불필요한 동작을 해야된다.
남자1 = Man()
남자1.age = 15
남자2 = Man()
남자2.age = 25
남자3 = Man()
남자3.age = 35

위 예제처럼 동작하는 일을 사용하는 유저의 입장에서 상당히 번거로운 일입니다. 그래서 Python에서는 class를 정의할 때 __init__키워드를 통해서 생성 메서드(생성자)를 만들 수 있습니다. 이 생성 메서드를 정의한 후 객체를 만들면 조금 더 효율적인 객체 생성이 가능해집니다.

 

#생성자를 통한 class정의와 사용
class Man2():
    def __init__(self,age):
        self.age = age
        
남자4 = Man2(15)        
남자5 = Man2(25)        
남자6 = Man2(35)

예제처럼 __init__함수를 정의하여 생성자 메서드를 만들면 효율적인 객체 생성 및 관리가 가능해집니다.

 

모든 class 메서드의 첫 번째 인자는 self이다. 

class를 정의하는 과정에서 생성자(__init__) 또는 다양한 메서드에는 받는 인자를 표현해 주어야 합니다.

이때, 모든 클래스 안의 함수(메서드)의 첫 번쨰 인자는 self입니다.

Python에서 self의 의미는 자기 자신을 가지고 온다는 의미입니다. 

class Man2():
    def __init__(self,age):
        self.age = age

남자4 = Man2(15)

예제르 말로 풀어 정리하자면 다음과 같습니다.

  • Man2의 틀을 가지고 남자 4라는 객체를 생성하였습니다.
  • 이때 Man2 class의 정의된 생성자 때문에 남자 4 객체 자신의 정보와 15라는 2번째 인자를 통해, 자기 자신의 객체의 정보를 갱신합니다.

del 키워드를 이용한 객체 제거하기

객체 지향적 프로그래밍을 하면, 많은 객체가 생성됩니다. 즉 프로그램이 잡아먹는 자원이 증가하게 됩니다.

따라서 프로그램 흐름상 객체의 존재가치가 없다면 사용하는 자원을 줄이기 위해 프로그램 상에서 지워주어야 합니다.

지우기 위해서 del 키워드를 이용합니다.

#del 키워드를 이용해 사용이 끝난 객체 제거하기
del 남자4
del 남자5
del 남자6

예제처럼 사용이 끝난 객체를 제거(반환)하면 조금 더 효율적으로 컴퓨터 자원을 활용할 수 있습니다.

728x90
반응형

'컴퓨터 > Python' 카테고리의 다른 글

Python - class 상속  (0) 2022.01.19
Python - class 2 (self, __init__ 키워드)  (0) 2022.01.19
Python - Lambda (함수의 간단한 표현 방법)  (0) 2022.01.08
Python - Tuple(튜플)  (0) 2021.11.24
Python - 함수(Function)  (0) 2021.11.18

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :