본문 바로가기
python

python - 객체 지향 프로그래밍(클래스, 생성자, 인스턴트 변수, 메소드)

by orangecode 2022. 5. 2.
728x90
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 값으로 반환해준다.

 

 

반응형

댓글