__str__
method 는 "문자열화 함수"이다.
class Car(): # class 생성
wheels = 4
doors = 4
Windows = 4
seats = 4
k3 = Car()
print(k3) # <__main__.Car object at 0x0000025FAC5E6BE0>
k3
instance를 출력하면 <__main__.Car object at 0x0000025FAC5E6BE0>
문자열이 출력된다. 즉 instance
의 "정체성"을 표현한다고 불 수 있다. 그런데 __str__() method
를 사용하면 instance의 정체성을 "변경"할 수 있다.
class Car(): # class 생성
wheels = 4
doors = 4
Windows = 4
seats = 4
def __str__(self):
return f'Car with seats : {self.seats}' # k3.seats
k3 = Car()
print(k3) # Car with seats : 4
__str__
를 수정 후 출력하니 Car with seats : 4
가 출력된다.
class Car(): # class 생성
wheels = 4
doors = 4
Windows = 4
seats = 4
def __str__(self):
return f'Car with seats : {self.seats}'
def instance(self):
print(self)
k3 = Car()
k3.instance() # Car with seats : 4
instance metohd
를 호출하면 Car with seats : 4
가 출력된다.
instance
자신을 출력했더니 Car with seats : 4
가 출력되므로 __str__ method
는 "instance" 정체성을 문자열로 표현해줌을 알 수 있다.
class Car(): # class 생성
wheels = 4
doors = 4
Windows = 4
seats = 4
def __init__(self, **kwargs):
print('__init__실행')
k3 = Car()
따로 출력하지 않고 instance
를 만들기만 했는데 "__init__실행" 문자열이 출력된다. __init__
은 "초기화 함수" 즉 "class를 만드는 함수"이다. 그래서 instance
를 만들기만 했는데도 문자열이 출력되는 것이다.
class Car(): # class 생성
wheels = 4
doors = 4
Windows = 4
seats = 4
def __init__(self, **kwargs):
print(kwargs)
k3 = Car(color='red', price='$30')
코드를 실행하니 kwargs
는 dictionary
구조여서 {'color': 'red', 'price': '$30'}
가 출력된다.
__init__
은 "class를 만드는 함수" 이기 때문에 Car()의 속성들을 아래와 같이 변경 가능하다.
class Car():
def __init__(self, **kwargs):
self.wheels = 4
self.doors = 4
self.Windows = 4
self.seats = 4
kwargs.get()
는 key
와 value
를 가진다.
그래서 color
, price
의 default
값을 black
, $20
으로 정의할 수 있다.
만약 color
속성 값을 입력하지 않으면 default
값이 출력될 것이고 값을 입력하면 "입력 값" 이 출력될 것이다.
class Car():
def __init__(self, **kwargs):
self.wheels = 4
self.doors = 4
self.Windows = 4
self.seats = 4
self.color = kwargs.get('color', 'black')
self.price = kwargs.get('price', '$20')
k3 = Car()
print(k3.color) # black
avante = Car(color='red', price='$40')
print(avante.color) # red
본 글은 노마드 코더의 Python으로 웹 스크래퍼 만들기 수업을 정리합니다.