Python에도 동일하게 Class가 존재합니다.
Class & Instance
클래스를 이용하는 장점은 다음과 같습니다.
- 전역 변수를 없애고 모든 변수를 어떠한 범위 또는 스코프 안으로 소속시킬 수가 있음.
- 몇 번이고 재사용이 가능하다.
- 코드의 수정을 최소화시킨다.
- 함수 실행중에, 함수 자신을 다시 호출하는 처리 등이 가능해진다.
클래스에 정의된 데이터나 함수를 사용하기 위해서는 "인스턴스"를 생성해야 합니다. 인스턴스 (Instance)는 클래스를 실체화한 것으로 소프트웨어 세계에 구현된 구체적인 실체를 의미하며 객체를 소프트웨어에 실체화하면 그것을 인스턴스라고 부릅니다 (객체는 클래스의 인스턴스). 클래스를 가지고 있으면 하나의 클래스로 여러 개의 인스턴스를 생성 가능하기도 합니다. 그리고 각각의 인스턴스에는 각각 다른 데이터를 가지도록 하는 것도 가능합니다.
우선 Python에서 Class를 만들어봅시다.
클래스를 우리가 사용하지 않고 함수를 파이썬에서 작성할때는 보통 다음과 같이 작성합니다.
def just_function(some_variable):
print(some_variable)
그러나 우리가 파이썬에서 클래스를 이용하여 작성을 할때는 다음과 같이 작성을 합니다.
class just_class:
def __init__(self,some_variable):
self.some_variable = some_variable
def some_function(self):
print(self.some_variable)
만들어진 Class를 이용하기 위해서는 다음과 같이 instance1이라는 변수를 적어주시고 옆에 클래스를 적어주심으로써 클래스의 인스턴스가 instance1에 할당되었다고 할 수가 있습니다.
instance1 = just_class("some_value")
instance1.some_function()
그리고 class 내부에 정의된 메소드, some_function을 사용하기 위해서. 을 이용하여 불러주면 됩니다.
(실행 결과는 "some_value"라는 글자가 return 될것입니다)
__init__와 self 이해
좀더 더 들어가 봅시다. 파이썬에서 Class를 만들 때는 항상 __init__이 먼저 존재합니다. 역할은 다음과 같습니다.
- 컨스 트럭터, 즉 생성자라고 불리며 인스턴스를 만들 때 자동으로 호출되는 함수입니다.
- 실행 순서는 반드시 처음에 호출됩니다.
- 오브젝트 생성과 관련하여 데이터의 초기화를 실시해줍니다.
정리하면 클래스 구성에서 정보를 유지하기 위한 중요한 구성이기에 빼놓을 수 없는 것으로 생각하시면 되며 객체 생성 시에 정보의 추가기재 또한 간단히 가능합니다.
class MyWallet:
def __init__(self,current_money):
self.current_money = current_money
def print_money(self):
print(self.current_money)
person1 = MyWallet(10000000000)
그리고 self라는 인수도 계속 보이는데 self는 해석 그대로 자신을 나타내기 때문에 "인스턴스 자신", "그 시점의 자신", "메서드의 임의의 인수"등 다양하게 불리며 객체 자기 자신을 참조하는 매개변수입니다. 다른 객체 지향 언어에서는 모두 이것을 메서드에 안 보이게 전달하지만 파이썬은 클래스의 메서드를 정의 시 self를 명시하게 되어있습니다. 메서드를 불러올 때 self는 자동으로 전달되며 self를 이용함으로써 클래스 내에 정의한 멤버에 접근을 할 수 있게 됩니다.
*더 많은 Class에 대한 정보는 해당 링크에 자세히 설명이 되어 있으니 참고하시면 좋을듯합니다!
'프로그래밍 ( Programming ) > Python' 카테고리의 다른 글
[Python] Pickle 파일의 Dictionary에서 값 추출하는 방법 (0) | 2021.12.13 |
---|---|
[Python] 모듈(Module)과 패키지(Package) 의미 정리 (0) | 2021.11.24 |
[Python] numpy - hstack, vstack 함수 (0) | 2021.01.12 |
[Python] numpy.reshape의 -1 의미 및 기능 (0) | 2021.01.12 |
[Python] numpy.meshgrid란 (0) | 2021.01.11 |
댓글