Python - class 2 (self, __init__ 키워드)

컴퓨터/Python

728x90
반응형

self와 __init__

class 상속을 다루기에 앞서 self와 __init__ 키워드에 대하여 조금 더 알아보도록 하겠습니다.

class를 만들면서 자기 자신을 뜻하는 self와 class를 통해 객체를 생성할 때 생성을 정의해 주는 메서드 __init__에 대하여 알아봅시다.

 

자신을 뜻하는 self

class를 이용하여 객체를 만들 틀을 생성한다고 했습니다. 이 때 class의 모든 메서드의 첫 번째 인자는 self 즉 자기 자신이 인자로 들어가게 됩니다.

class Myclass:
    name = "나의 클래스"
    def Myfun1(self):
        print(self.name)
    def Myfun2(object):
        print(object.name)

예제로 만든 소스코드를 해석해보면 아래와 같습니다.

  • class 키워드를 통해 Myclass라는 객체틀을 만들었습니다.
  • name이라는 변수와 2개의 메서드가 존재합니다.
  • Myfun1 , Myfun2 메서드는 둘다 객체 자신을 첫 번째 인자로 받아옵니다.

조금 이해가 되시나요? 인자를 정의하는 이름은 다르지만 2개의 메서드 모두 자신을 인자로 받아옵니다. 

 

생성자 __init__ 

class를 통해 객체를 만들 틀을 만들었다면 초기에 객체에 대한 세팅을 해줄 수 있습니다. 이를 조금 더 쉽게 설정하는 방법이 바로 __init__ 메서드를 정의해 주는 것입니다. 

__init__ 메서드를 통해 class 내에서 초기 생성자를 정의해 준다면 조금 더 효율적인 class를 활용할 수 있게 됩니다.

 

class Myclass:
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def Say(self):
        text = "이름은 {}이고 나이는 {}입니다.".format(self.name,self.age)
        print(text)


Neo = Myclass("Neo",24)
Sam = Myclass("Sam",35)

Neo.Say()

예제 소스코드를 해석해 보면 다음과 같습니다.

  • Myclass라는 객체틀을 만들었다.
  • 생성자의 인자는 self,name,age
  • Say라는 메서드가 포함되어 있으며 자신의 이름과 나이를 출력한다.
  • Neo와 Sam이라는 객체를 생성하고 이름과 나이를 정의했다.
  • Neo의 메서드 Say를 호출했다.
    이처럼 self 와 __init__을 잘 이해한다면 효율적인 객체 지향형 프로그래밍을 할 수 있다.
728x90
반응형

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

Python - Module (라이브러리)  (0) 2022.01.20
Python - class 상속  (0) 2022.01.19
Python - class1(객체 지향을 지원한다)  (0) 2022.01.18
Python - Lambda (함수의 간단한 표현 방법)  (0) 2022.01.08
Python - Tuple(튜플)  (0) 2021.11.24

Commnet

G91개발일지

Gon91(지구일)

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

TODAY :

YESTER DAY :

TOTAL :