Backend/Python

[Python] 파이썬 class의 특징

sangwonYoon 2023. 3. 7. 00:22

다른 언어들과 구별되는 파이썬의 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

 

파이썬 더블 언더스코어: Magic Method | Corikachu

파이썬에서 __를 달고있는 메소드들에 대해서 살펴봅시다.

corikachu.github.io

 

추상 클래스

@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