본문 바로가기

파이썬/3. 객체지향 프로그래밍

파이썬 클래스, 멤버, 메서드

파이썬의 객체지향 프로그래밍에 대해 알아보자.

 

클래스

  • 객체지향 프로그래밍의 기본 단위
  • 속성(상태)와 메서드(행동)을 갖는다.
  • 객체의 구조와 행동을 정의
  • 초기화를 통해 제어
  • 복잡한 문제를 다루기 쉽게 만든다.
  • 자세한 내용은 다음 포스팅에서.

멤버

  • =클래스 내부 변수(멤버 변수)
  • method, property, class variable, instance variable, initinalizer, destructor 등이 멤버이다.

메서드

  • =클래스 내부 함수
  • 크게 인스턴스 메서드, 클래스 메서드, 정적 메서드로 구성
  • 초기자(Initializer)
    • __init__()의 형태
    • 클래스로 객체를 만들 때마다 인스턴스 변수를 초기화하기 위해서 실행
    • self의 형태로 변수를 할당하여 계속 사용할 수 있게 준비한다.
  • 인스턴스 메서드(Instance Methods)
    • 내부에 액세스 하기 위해 self 인수를 갖음
class calculator:
    def __init__(self, a, b):
    	self.a = a
        self.b = b
        
    def add(self):                # self로 액세스 가능
    	return (self.a + self.b)
        
order = calculator(1, 2)
print(order.add())
# 3

 

 

  • 클래스 메서드(Class Methods)
    • self 대신 cls인자를 사용
    • class에 인자를 전달해줌
class calculator:
    def __init__(self, a, b):
    	self.a = a
        self.b = b
        
    def add(self):
    	return (self.a + self.b)
    
    @classmethod
    def clsmtd(cls, x):
    	return cls(x, x)         # 받은 인수를 class에 반환한다.
        
order1 = calculator(1, 2)
print(order1.add())
# 3

order2 = calculator.clsmtd(1)
print(order2.add())
# 2

 

 

  • 스태틱 메서드(Static Methods)
    • 인스턴스나 클래스를 인자로 받지 않는 메소드
    • 일반 함수와 큰 차이 없음
class calculator:
    def __init__(self, a, b):
    	self.a = a
        self.b = b
        
    def add(self):
    	return (self.a + self.b)
    
    @classmethod               
    def clsmtd(cls, x):
    	return cls(x, x)         
    
    @staticmethod                # 데코레이터를 써서 사용
    def sttmtd():
    	print("정적 메소드 입니다.")
        
order1 = calculator(1, 2)
print(order1.add())
# 3

order2 = calculator.clsmtd(1)
print(order2.add())
# 2

order3 = calculator(1, 2)
order3.sttmtd()
# 정적 메소드 입니다.