컴퓨터/Python
파이썬 언어도 다른 많은 고급언어들과 같이 객체(Object) 지향 방식의 프로그래밍을 지원합니다.
이 객체지향적 프로그래밍을 통해 더 시각화된 프로그래밍을 할 수 있습니다.
class 키워드를 통해 객체를 생성하기 위한 틀을 만들며 이 안에 속성 값(properties)과 메서드(method)를 만들 수 있습니다.
그다음, 만들어진 틀을 이용해서 객체(Object)를 생성하여 사용할 수 있습니다.
class 키워드를 이용하여 객체의 틀을 만들 수 있습니다.
이 객체에는 속성과 메서드라는 두 가지의 개념이 들어갈 수 있습니다.
그렇다면, class 키워드를 통해 class를 만드는 예제를 보도록 하겠습니다.
# 아무것도 없는 class
class Human:
pass
# 속성값이 있는 class
class Man:
age = 20
# 메서드가 있는 class
class Woman :
def Say(self):
print("안녕하세요 저는 Woman입니다.")
예제처럼 다양한 형태로 객체를 만들기 위한 틀을 정의할 수 있습니다.
class를 만들어서 객체를 대량으로 생산할 준비가 완료되었습니다. 이제 실제 객체를 생성해보고 사용해 보도록 하겠습니다.
객체를 생성하기 위해서는 class 명을 호출하여 객체를 생성합니다.
#빈 클래스를 통해서 여러 객체를 생성해 봅시다.
사람1 = Human()
사람2 = Human()
사람3 = Human()
이렇게 만들어진 객체들은 동일한 틀을 통해 생성되었지만 하나하나씩 다른 존재입니다.
#속성 값 이용해보기
남자1 = Man()
print(남자1.age)
남자1.age = 30
print(남자1.age)
생성된 객체에서 속성 값에 접근하기 위해서는 예제처럼 객체명. 속성명을 통해 접근할 수 있습니다. 수정 또한 가능합니다.
#객체 생성 및 메서드 호출
여자1 = Woman()
여자1.Say()
예제처럼 객체를 생성하고 메서드 또한 속성과 같이. 을 통해서 접근하여 사용할 수 있습니다.
위 내용에서 우리가 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를 정의하는 과정에서 생성자(__init__) 또는 다양한 메서드에는 받는 인자를 표현해 주어야 합니다.
이때, 모든 클래스 안의 함수(메서드)의 첫 번쨰 인자는 self입니다.
Python에서 self의 의미는 자기 자신을 가지고 온다는 의미입니다.
class Man2():
def __init__(self,age):
self.age = age
남자4 = Man2(15)
예제르 말로 풀어 정리하자면 다음과 같습니다.
객체 지향적 프로그래밍을 하면, 많은 객체가 생성됩니다. 즉 프로그램이 잡아먹는 자원이 증가하게 됩니다.
따라서 프로그램 흐름상 객체의 존재가치가 없다면 사용하는 자원을 줄이기 위해 프로그램 상에서 지워주어야 합니다.
지우기 위해서 del 키워드를 이용합니다.
#del 키워드를 이용해 사용이 끝난 객체 제거하기
del 남자4
del 남자5
del 남자6
예제처럼 사용이 끝난 객체를 제거(반환)하면 조금 더 효율적으로 컴퓨터 자원을 활용할 수 있습니다.
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 |
91년생 공학엔지니어의 개발일지
TODAY :
YESTER DAY :
TOTAL :
Commnet