Python

[python] class 와 self / __init__

nang. 2020. 10. 14. 23:47
반응형
SMALL

Class

붕어빵 틀과 같이 똑같은 것을 반복해서 만들어낼 수 있는 설계 도면 같은 것

  • object
    • class 로 만들어낸 결과물 (붕어빵)

class Bread:
    pass

a = Bread() # 클래스로 객체 생성
  • cf. 객체와 인스턴스의 차이
    • 클래스에 의해서 만들어진 객체를 인스턴스라고도 한다.
    • a를 단독으로 지칭할 때: 'a는 객체'
    • 클래스와 연관지어서 지칭할때: 'a는 Bread의 인스턴스'


self 매개변수

  • 일반적 함수와 달리 메소드의 첫번째 매개변수 self는 특별한 의미를 가짐
  • 파이썬에서는 첫번째 매개변수 명은 관례적으로 self를 사용
    • 다른 이름 써도 괜찮긴 함

class Calc:
    def setData(self, first, second): # self는 호출하는 객체
        self.first = first
        self.second = second

    def add(self): # 더하기 기능
        result = self.first + self.second
        return result

a = Calc() # 클래스로 객체 생성
a.setData(3, 5) # 객체 숫자 세팅
a.add()
  • a.setData(3, 5)에서 adef setData(self, first, second):self
    • 즉, 함수 호출 시 a.first = first가 되는 것


__init__(self..)

생성자 역할

  • Calc 클래스의 인스턴스 asetData()를 수행하지 않고 add()를 수행하면 오류가 발생
    • setData()를 수행하야 객체 a의 객체변수 first, second가 생성되기 때문
    • 안하면 변수가 없기때문에 연산 불가
      • 그럼 무조건 setData()를 해줘야만 하나? NO
      • 객체에 초기값을 설정해놓으면 됨
        • 이때 생성자 역할을 하는 __init__ 사용
        • 이 키워드를 사용하면 해당 메소드는 생성자라는 것
          • 객체 생성할 때 ! 매개변수 넣어서 값을 주는 것

class Calc:
    def __init__(self, first, second): # 생성시 필요한 변수 2개
        self.first = first
        self.second = second

    def setData(self, first, second): 
        self.first = first
        self.second = second

    def add(self): 
        result = self.first + self.second
        return result

a = Calc(3, 5) # 생성시 바로 변수 설정 가능
a.add() # setData() 필요없이 더하기 가능
  • 객체를 생성하면서 매개변수 보내주면 그 변수들로 바로 설정해놓겠다
  • __init__를 설정해놨기 때문에 전처럼 a = Calc() 호출하면 오류
반응형
LIST

'Python' 카테고리의 다른 글

[python] sys.setrecursionlimit()  (0) 2020.10.21
[python] 배열에 숫자 순서대로 삽입하기  (0) 2020.10.10
[python] sort(), sorted() 함수  (0) 2020.10.09
[python] reverse(), reversed() 함수  (0) 2020.10.08
[python] extend 함수  (0) 2020.10.08