■ @dataclass 데코레이터의 unsafe_hash 인자를 사용해 객체 해시값을 사용하는 방법을 보여준다. ▶ 예제 코드 (PY)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
from dataclasses import dataclass @dataclass(unsafe_hash = True) class Student: id : int name : str student1 = Student(100, "홍길동") student2 = Student(100, "홍길동") student3 = Student(100, "홍길동") student4 = Student(200, "이영희") print({student1, student2, student3, student4}) """ {Student(id=200, name='이영희'), Student(id=100, name='홍길동')} """ |
■ @dataclass 데코레이터의 frozen 인자를 사용해 불변 클래스를 만드는 방법을 보여준다. ▶ 예제 코드 (PY)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
from dataclasses import dataclass @dataclass(frozen = True) class Student: id : int name : str student1 = Student(100, "홍길동") student1.id = 200 """ Traceback (most recent call last): File "/home/king/testproject/main.py", line 10, in <module> student1.id = 200 File "<string>", line 4, in __setattr__ dataclasses.FrozenInstanceError: cannot assign to field 'id' """ |
■ @dataclass 데코레이터의 order 인자를 사용해 객체 비교하거나 정렬하는 방법을 보여준다. ▶ 예제 코드 (PY)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
from dataclasses import dataclass @dataclass(order = True) class Student: id : int name : str student1 = Student(100, "홍길동") student2 = Student(200, "이영희") print(student1 > student2) print(sorted([student2, student1])) """ False [Student(id=100, name='홍길동'), Student(id=200, name='이영희')] """ |
■ @dataclass 데코레이터를 사용해 클래스를 만드는 방법을 보여준다. ▶ 예제 코드 (PY)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
from dataclasses import dataclass @dataclass class Student: id : int name : str student1 = Student(100, "홍길동") student2 = Student(200, "이영희") print(student1) print(student2) print(student1 == student2) """ User(number=123, name='Kim') User(number=123, name='Kim') True """ |