[Python] Magic Methods & Dunder

미남잉·6일 전
0

썸넬 gpt가 만들어줌...

python advanced 강의를 들으며, 정리한 부분입니다.

강의 출처: 유튜브 - Magic Methods & Dunder - Advanced Python Tutorial #1

class Vector:

	def __init__(self, x, y):
		self.x = x
		self.y = y
		
	def __add__(self ,other):
		return Vector(self.x + other.x, self.y + other.y)
		
	def __repr__(self):
		return f"X: {self.x}, Y: {self.y}"
		
	def __len__(self):
		return 10
		
	def __call__(self):
		print("Hello. I want to go home")
		
v1 = Vector(10, 20)
v2 = Vector(50, 60)
v3 = v1 + v2

print(v3) # X: 60, Y: 80
print(len(v3)) # 10
print(v3()) # Hello. I want to go home
  1. __init__ (생성자, Constructor)

    • 객체가 생성될 때 자동으로 호출되는 생성자 메서드
    • self.x , self.y 를 통해 인스턴스 변수를 초기화함
    • Vector(10, 20)를 실행하면 x=10, y=20으로 저장됨
  2. __add__ (연산자 오버로딩: +)

    • 연산자를 사용할 때 동작을 정의하는 메서드
  3. __repr__ (객체를 문자열로 표현)

    • print(객체)를 하면 기본적으로 객체의 메모리 주소가 풀력됨
    • __repr__ 를 정의하면, 객체가 어떤 데이터인지 쉽게 확인할 수 있도록 문자열을 반환함
    • __str__ 과 유사하지만, __repr__ 은 디버깅 및 개발 목적으로 주로 사용됨
  4. __len__ (객체의 길이 반환)

    • 일반적으로 이 메서드는 객체의 실제 길이(예: 리스트, 문자열의 길이 등)를 반환하도록 구현하는 것이 좋음
    • 여기서는 10을 고정 값으로 반환하고 있음
  5. __call__ 메서드 (객체를 함수처럼 호출)

    • 객체를 함수처럼 실행할 수 있게 해주는 메서드
    • 객체 뒤에 ()를 붙이면 자동 실행됨
    • 그래서 v3()를 호출하면 "Hello. I want to go home"이 출력됨
profile
Computer Vision Engineer

0개의 댓글

관련 채용 정보