다른 언어들과 구별되는 파이썬의 class 생성 방식을 알아보자.
생성자
생성자는 __init__ method에 정의한다.
class 내 모든 method의 첫번째 파라미터는 self이다.
class Animal:
def __init__(self, name):
self.name = name
상속
class 선언 시 괄호 안에 상속받을 class를 넣어 상속받는다.
class Cat(Animal): # Cat class는 Animal class로부터 상속받는다.
...
매직 메소드
under score 두개 (__)를 붙인 built-in 함수를 정의하여, class가 처리할 연산을 손쉽게 정의할 수 있다.
https://corikachu.github.io/articles/python/python-magic-method
추상 클래스
@abstractmethod 를 활용하여 추상 메소드를 생성할 수 있다.
class Animal:
def __init__(self, name):
self.name = name
@abstractmethod
def talk(self):
pass
private attribute / method
attribute 또는 method 이름 앞에 __을 붙여 타 객체가 접근하지 못하도록 선언할 수 있다.
class Person:
def __init__(self, name):
self.__name = name
me = Person("sangwon")
print(me.__name)
# 출력:
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# AttributeError: 'Person' object has no attribute '__name'
다만, 주의해야 할 점은
class Person:
def __init__(self, name):
self.__name = name
me = Person("sangwon")
me.__name = "youngsu"
위 코드는 에러 없이 동작한다.
그 이유는 인스턴스 me의 __name이라는 이름을 갖는 새로운 public attribute를 생성하기 때문이다.
'Backend > Python' 카테고리의 다른 글
[Python] decorator (0) | 2023.03.07 |
---|---|
[Python] closure (0) | 2023.03.07 |
[Python] asterisk (0) | 2023.03.07 |
[Python] generator (0) | 2023.03.07 |
[Python] 파이썬 코드만의 특징 (0) | 2023.03.06 |