반응형
Dataclasses 는 말 그대로 data 를 담는 클래스다. 이 모듈을 사용했을때 어떤 장점이 있는지 알아보자.
Dataclasses 모듈 사용하는 법
아래와 같이 모듈을 import하고 @dataclass 데코레이터를 클래스 위에 써준다.
from dataclasses import dataclass
@dataclass
class Friends:
name: str
age: int
goodfriends: bool = True
Dataclasses 모듈의 장점
- 위의 코드에서 보는 것처럼 default 값을 설정해 줄 수 있다. goodfrineds의 디폴트 값을 True로 설정한 것처럼.
- 간단하게 class 를 작성할 수 있다. 기존에 쓰던 def __init__, self 이런거 없이 간단함
- 데이터 값을 쉽게 바꿔줄 수 있다. 이 예로 아래 코드를 한번 보자.
더 자세한 장점과 예시는 여기서 더 다루어보았다.
2024.02.25 - [배움 기록/Programming] - [python, dataclass] 데이터 클래스의 장점
Friends 객체의 값을 dictionary에 저장된 값으로 변형하고 싶다고 할때, dataclasses 모듈을 사용하지 않으면 아래와 같은 코드를 이용해 값을 바꿔줄 수 있다.
friends_dict = {'name': 'Kim', 'age': 17, 'goodfriends': True}
Kim = Friends()
for key, value in friends_dict.items():
setattr(Kim, key, value)
하지만 Dataclasses 모듈을 사용하면 아래의 코드처럼 한줄로 쉽게 객체 값을 바꿔 줄 수 있다.
Kim = Friends(**friends_dict)
**kwargs 는 무엇이며 사용 목적은 무엇인가
참고로 ** 이 붙는 것은 **kwargs 로부터 온것인데, kwargs는 "keyword arguments" 를 의미한다.
**kwargs는 dictionary 형을 unpack하기 위해 사용할 수 있다.
아래 코드는 같은 데이터 값을 Friends라는 객체에 저장한다.
즉, **을 붙임으로써 사전형 데이터를 unpack해서 객체에 사용함을 알 수 있다.
# Friends(**friends_dict)
Friends(**{'name': 'Kim', 'age': 17, 'goodfriends': True})
# 이 둘은 같은 데이터를 Friends라는 객체에 저장한다
Friends(name='Kim', age=17, goodfriends=True)
배움을 기록하기 위한 공간입니다.
수정이 필요한 내용이나 공유하고 싶은 것이 있다면 언제든 댓글로 남겨주시면 환영입니다 :D
반응형
'배움 기록 > Programming' 카테고리의 다른 글
GitHub Copilot이란? 학생 무료 계정 사용법 !! (0) | 2023.09.27 |
---|---|
torch. squeeze의 역할 (0) | 2023.06.14 |
[python] argparse 사용법, verbose 란 ? (0) | 2023.04.03 |
[python, pathlib, glob] 특정 directory (경로) 추출하기 (0) | 2023.03.29 |
[python] plt.savefig 이미지 잘리는 경우, 해결방법 3가지 (0) | 2023.03.27 |