반응형
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)
에서a
가def setData(self, first, second):
의self
- 즉, 함수 호출 시
a.first = first
가 되는 것
- 즉, 함수 호출 시
__init__(self..)
생성자 역할
Calc
클래스의 인스턴스a
에setData()
를 수행하지 않고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 |