파이썬심화-1 매직 메서드
매직 메소드
- 클래스 안에 정의된 함수를 메서드라고 부름
- 메서드 중에서 __로 시작해서 __로 끝나는 메서드를 매직 메서드 라고함
- 파이썬에서 클래스를 사용하면 사용자가 직접 타입을 만들 수 있음
- 리스트, 튜플, 정수, 문자열 등과 같은 타입도 클래스를 통해 만들어짐
__init__
- 생성자라고 불리는 초기화를 위한 메서드
- 인스턴스화를 할 때, 즉 클래스를 변수에 할당할 때 자동적으로 실행됨
- 객체 생성과 관련하여 데이터의 초기화를 실시하는 함수
class MyFunc:
def __init__(self):
print(f"객체를 생성할 때 자동적으로 실행")
a = MyFunc()
class MyFunc:
def __init__(self, a, b):
self.a = a
self.b = b
print(self.a, self.b)
a = MyFunc(1, 2)
객체를 생성할 때 자동적으로 실행
1 2
__call__
- 함수를 호출하는 것 처럼 클래스의 객체도 호출할 수 있게 만드는 메서드
- 인스턴스가 호출될 때 실행됨
- 파이썬의 함수는 사실 function 클래스의 객체임. 따라서 함수를 호출할 때
()
는 function 클래스에 정의된__call__
메서드를 호출하는 것임
class MyFunc:
def __call__(self):
print("호출됨")
a = MyFunc()
a()
class MyFunc:
def __call__(self, a, b):
self.a = a
self.b = b
print(self.a, self.b)
a = MyFunc()
a(1,2)
호출됨
1 2
__getattribute__
- 변수가 어떤 객체를 바인딩하고 있을 때
.
을 찍으면 호출되는 메서드
class MyFunc:
def __getattribute__(self, item):
print(item, "객체에 접근")
a = MyFunc()
a.data1
a.data2
data1 객체에 접근
data2 객체에 접근
__str__
- 객체를 문자열로 표현한 것을 반환하는 메서드
str()
함수는 사실 내장 함수가 아닌 내장 클래스(str(False) == False.__str__()
)
class MyFunc:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"{self.name}, {self.age}"
a = MyFunc("Mr.kim", 25)
print(a)
Mr.kim, 25
__del__
- 소멸자라고 불리는 메서드
- 객체가 소멸할 때 자동으로 실행됨
class MyFunc:
def __init__(self):
print("객체 생성")
def __del__(self):
print("객체 소멸")
a = MyFunc()
del a
객체 생성
객체 소멸
class MyFunc:
area = 0
a = MyFunc()
a.area = 20
b = MyFunc()
b.area = 10
print(a.area + b.area)
30
댓글남기기