例如,self.env
具有复杂的实现。如何转让它以使用数据类?
class Request(object):
def __init__(self, env: str, email: str, password: str):
self.env = env if len(env) > 2 else 'default'
self.email = email
self.password = password
答案 0 :(得分:3)
您需要按照文档中的说明实施__post_init__(self)
方法。这样,您可以在初始化发生后添加验证步骤
@dataclass
class Request:
env: str
email: str
password: str
def __post_init__(self):
self.env = self.env if len(self.env)>2 else 'default'
Request('a', 'hello@world.com', 'qwerty1234')
# returns:
Request(env='default', email='hello@world.com', password='qwerty1234')
Request('test2', 'hello@world.com', 'qwerty1234')
# returns:
Request(env='test2', email='hello@world.com', password='qwerty1234')