import re class Password(str): def __new__(cls, value: str): cls._validate(value) return super().__new__(cls, value) @classmethod def _validate(cls, value: str): if len(value) < 8: raise ValueError("비밀번호는 8자 이상이어야 합니다.") if not re.search(r"[A-Z]", value): raise ValueError("비밀번호는 대문자 영어 1개 이상이어야 합니다.") if not re.search(r'[!@#$%^&*(),.?":{}|<>]', value): raise ValueError("비밀번호에는 특수문자가 1개 이상 포함되어야 합니다.")