创建attrs字段的替代API
项目描述
Elysia
Elysia是attrs的插件,它提供了一个用于在@define
类上创建字段的替代API。
安装
pip install elysia
用法
Elysia的唯一导出是Fields
类,它封装了attrs.field
、attrs.setters
和attrs.validators
,为定义实例属性提供了一个更简洁的API。
以下是一个使用attrs和Elysia创建的类的简要示例
from datetime import datetime
from attrs import define
from elysia import Fields
@define
class User:
name: str = Fields.field()
password: str = Fields.field(
on_setattr=Fields.setters.validate,
validator=Fields.validators.min_len(8)
)
created_at: datetime = Fields.attr(factory=datetime.utcnow, frozen=True)
User
类有两个__init__
参数:name
和password
。每次设置时,都会验证password
以确保它至少有8个字符长。
User
还有一个名为created_at
的属性,它不能通过__init__
参数设置。当创建User
对象时,created_at
设置为当前时间,之后不能更改。
那么,这一切是如何工作的呢?
很高兴您问了。
使用Elysia定义属性有两种方式:Fields.field()
和Fields.attr()
。Fields.field()
定义映射到__init__
参数的属性;Fields.attr()
定义不映射到__init__
参数的属性。两者都是对attrs.field
的封装,并接受所有相同的参数。像attrs.field
一样,Fields.field()
和Fields.attr()
的所有参数都是关键字参数。
这两种方法也接受一个可选的布尔参数frozen
。将其设置为True
是on_setattr=attrs.setters.frozen
的快捷方式——也就是说,它将属性冻结,如果您在初始化后尝试设置它,则会抛出异常。
警告
艾莉西亚很高兴将
frozen=True
与您传递给on_setattr
的任何其他内容结合使用,但attrs.setters.frozen
将首先应用,这可能与您的预期不符。
字段还通过 Fields.setters
和 Fields.validators
分别提供对 attrs 的设置器和验证器的访问。无论通过 Fields
还是 attrs
访问设置器和验证器都没有区别。做您喜欢的事情。
许可证
艾莉西亚遵循 MIT 许可证。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分发
构建分发
elysia-1.1.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1f45374f994ae86833d59200c960bd0aaccdb5ccc65f5d7a6bbe3fc8376f7976 |
|
MD5 | f8b9d463b6b2db98781ad9097959d210 |
|
BLAKE2b-256 | abde67b9761b33016a3b3ef06bd385fe8446f4e8b2ea3ad972f52d5010678c93 |
elysia-1.1.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3fc07c5c4e42c3e32fbc3b830a379fc7edea03c825627c1c46a98660fa88fd1d |
|
MD5 | d201f21fa64fd5f51903ea389b82e806 |
|
BLAKE2b-256 | c3da1e089a52feecb5e5b776e06afce515eedff616469a88837a76e9c7de49b5 |