Class 생성
class Cal(object):
def __init__(self, v1, v2): # v1, v2 : __init__내부에서만 사용가능한 지역변수 # 데이터 초기화 함수
if isinstance(v1, int): # isinstance : instance가 존재하는 지 확인하는 함수
self.v1 = v1
if isinstance(v2, int):
self.v2 = v2
사칙연산이 가능한 계산기 클래스를 만들어보자.
Class 안에 구현된 함수를 Method라고 부른다.
※ __init__
- constructor(생성자)라고 불리는 초기화를 위한 함수(method)
- 인스턴스화를 실시할 때 반드시 처음에 호출되는 특수한 함수
- 인스턴스 생성과 관련해 데이터 초기화를 실시하는 함수
__init__()의 첫 번째 인수로 반드시 self를 지정해야한다.
self에는 인스턴스 자체가 전달되어 있어, method 내에 인스턴스 변수 작성/참고가 가능해진다.
class 생성 시 지정한 인수는 __init__ method의 두 번째부터 작성해나가면 된다.
※ self
class 내부의 self는 '인스턴스 자신', 'method 임의 인수' 등으로 불리지만,
class 구성을 만들 때, 정형의 구분으로써 기억하길 바란다.
※ isinstance 함수
isinstance(인스턴스, 데이터나 클래스 타입)
- 첫 번째 매개변수 : 확인하고자 하는 데이터의 값, 객체, 인스턴스
- 두 번째 매개변수 : 확인하고자 하는 데이터의 타입, 클래스
- 반환 값 : 인스턴스와 타입이 같으면 True, 다르면 False를 반환
def __init__(self, v1, v2)에서 self 뒤로 v1, v2 인수를 설정할 수 있다.
Cal 함수의 매개변수 (10, 10)이 __init__(self, v1, v2)의 v1, v2로 입력되어 10, 10의 결과값이 나온 것을 확인할 수 있다.
class Cal 사칙연산 구현하기
class Cal(object):
def __init__(self, v1, v2):
self.v1 = v1
self.v2 = v2
def add(self):
return self.v1+self.v2
def subtract(self):
return self.v1-self.v2
__init__ 초기화 함수 이후, 더하기, 빼기 기능을 추가해준다.
add(self): self로 instance를 받아오고
result = self.v1 + self.v2로 변수를 정의해준다.
실행하면 결과값은 아래와 같다.
get, set method
class Cal(object):
def __init__(self, v1, v2):
if isinstance(v1, int):
self.v1 = v1
if isinstance(v2, int):
self.v2 = v2
def add(self):
return self.v1+self.v2
def subtract(self):
return self.v1-self.v2
def setV1(self, v): # instance 변수의 값을 설정
if isinstance(v, int):
self.v1 = v
def getV1(self): # instance 변수의 값 가져오기
return self.v1
c1 = Cal(10,10)
print(c1.add())
print(c1.subtract())
c1.setV1('one')
c1.v2 = 30
print(c1.add())
print(c1.subtract())
instance 변수를 직접 수정하지 않고 set, get method를 이용해서 설정 및 수정하는 것이다.
set method : instance 변수(v)의 값을 설정
get method : instance 변수(v)의 값을 가져옴
set method는 self.v1의 값이 isinstance(인스턴스, 데이터나 클래스 타입)로 v = int라면 True 결과값을 반환한다.
set method로 self.v1, self.v2 값으로 들어가는 v값이 int라면 True로 반환하며 계산이 가능해진다.
get method는 setmethod에서 설정한 변수의 값을 가져와서 self.v1, self.v2 값으로 반환해준다.
'python' 카테고리의 다른 글
python - 집합 자료형, 교집합, 합집합, 차집합 (0) | 2022.05.02 |
---|---|
python - 추상클래스(abstract class) (0) | 2022.05.02 |
python - Override (재정의) (0) | 2022.04.29 |
python - Class member, Class method (0) | 2022.04.29 |
python - 상속(inheritance) (0) | 2022.04.28 |
댓글