파이썬의 객체지향 프로그래밍에 대해 알아보자.
클래스
- 객체지향 프로그래밍의 기본 단위
- 속성(상태)와 메서드(행동)을 갖는다.
- 객체의 구조와 행동을 정의
- 초기화를 통해 제어
- 복잡한 문제를 다루기 쉽게 만든다.
- 자세한 내용은 다음 포스팅에서.
멤버
- =클래스 내부 변수(멤버 변수)
- 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()
# 정적 메소드 입니다.
'파이썬 > 3. 객체지향 프로그래밍' 카테고리의 다른 글
파이썬 연산자 오버로딩(operator overloading) (0) | 2020.04.28 |
---|---|
파이썬 메서드 오버라이딩(Method Overriding)과 다형성(Polymorphism) (0) | 2020.04.28 |
파이썬 클래스 상속, 합성과 통합 (0) | 2020.04.28 |
파이썬 캡슐화와 정보은닉 (0) | 2020.04.28 |
파이썬 객체지향 프로그래밍 (0) | 2020.04.28 |