用于帮助编写大量类似简单属性的类,而不需要样板代码的包
项目描述
用于帮助编写大量类似简单属性的类,而不需要样板代码的包。
状态
最新发布 |
文档 |
||
PyPI |
Anaconda |
||
覆盖率 |
许可 |
什么是Pyproprop?
您是否经常发现自己需要编写具有以下属性的类
from some_other_module import DefaultObject, some_type
class ExampleClass:
def __init__(self,
type_checked_value,
bounded_numeric_value,
specific_length_sequence_value,
obj_with_method_applied_value,
):
self.type_check_attr = type_checked_value
self.bounded_numeric_attr = bounded_numeric_value
self.specific_length_sequence_attr = specific_length_sequence_value
self.obj_with_method_applied_attr = obj_with_method_applied_value
self.instantiate_default_if_none_attr = None
@property
def type_checked_attr(self):
return self._type_checked_attr
@type_checked_attr.setter
def type_checked_attr(self, val):
if not isinstance(val, some_type):
msg = "`type_checked_attr` must be of `some_type`"
raise TypeError(msg)
self._type_checked_attr = val
@property
def bounded_numeric_attr(self):
return self._bounded_numeric_attr
@bounded_numeric_attr.setter
def bounded_numeric_attr(self, val):
val = float(val)
lower_bound = -1.0
upper_bound = 2.5
if val < lower_bound:
msg = f"`bounded_numeric_attr` must be greater than {lower_bound}"
raise ValueError(msg)
if val >= upper_bound:
msg = (f"`bounded_numeric_attr` must be less than or equal to "
f"{upper_bound}.")
raise ValueError(msg)
self._type_checked_attr = val
@property
def specific_length_sequence_attr(self):
return self._specific_length_sequence_attr
@specific_length_sequence_attr.setter
def specific_length_sequence_attr(self, val):
if len(val) != 2:
msg = "`specific_length_sequence` must be an iterable of length 2."
raise ValueError(msg)
self._specific_length_sequence_attr = val
@property
def obj_with_method_applied_value(self):
return self._obj_with_method_applied_value
@obj_with_method_applied_value.setter
def obj_with_method_applied_value(self, val):
val = str(val)
self._obj_with_method_applied_value = val.title()
@property
def instantiate_default_if_none_attr(self):
return self._instantiate_default_if_none_attr
@instantiate_default_if_none_attr.setter
def instantiate_default_if_none_attr(self, val):
if val is None:
val = DefaultObject()
self._instantiate_default_if_none_attr = val
使用Pyproprop可以删除所有这些样板代码,并且可以将完全相同的类重写为
from pyproprop import processed_property
from some_other_module import DefaultObject, some_type
class ExampleClass:
type_checked_attr = processed_property(
"type_checked_attr",
description="property with enforced type of `some_type`",
type=some_type,
)
bounded_numeric_attr = processed_property(
"bounded_numeric_attr",
description="numerical attribute with upper and lower bounds"
type=float,
cast=True,
min=-1.0,
max=2.5,
)
specific_length_sequence_attr = processed_property(
"specific_length_sequence_attr",
description="sequence of length exactly 2",
len=2,
)
obj_with_method_applied_attr = processed_property(
"obj_with_method_applied_attr",
description="sting formatted to use title case"
type=str,
cast=True,
method="title",
)
instantiate_default_if_none_attr = processed_property(
"instantiate_default_if_none_attr",
default=DefaultObject,
)
def __init__(self,
type_checked_value,
bounded_numeric_value,
specific_length_sequence_value,
obj_with_method_applied_value,
):
self.type_check_attr = type_checked_value
self.bounded_numeric_attr = bounded_numeric_value
self.specific_length_sequence_attr = specific_length_sequence_value
self.obj_with_method_applied_attr = obj_with_method_applied_value
self.instantiate_default_if_none_attr = None
安装
安装Pyproprop最简单的方法是使用Anaconda Python发行版及其包含的Conda包管理系统。要在命令提示符下安装Pyproprop及其所需依赖项,请输入以下命令
conda install pyproprop
使用pip安装,请在命令提示符中输入以下命令
pip install pyproprop
有关更多信息,请参阅安装文档。
贡献
许可
本项目遵循MIT许可协议。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源代码分发
pyproprop-0.4.10.tar.gz (41.7 kB 查看哈希值)
构建分发
pyproprop-0.4.10-py2.py3-none-any.whl (14.7 kB 查看哈希值)
关闭
pyproprop-0.4.10.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cc1d66e70c7fea779f97119f25f942c5b59d865eebb03c5ae1c873403c75ebc9 |
|
MD5 | e88e4ad0c680321ac34445ce55825ce1 |
|
BLAKE2b-256 | 591d207e7d985aacbd5240cd6f08fc12fc7557dfa7a976de9ad387e886de8f17 |
关闭
pyproprop-0.4.10-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ab35ae3e01fe688178aa7906940c041a9984cb2720f41f48c143b489829eaac9 |
|
MD5 | f4f046fc3bb110d1d26074d77e9b5f72 |
|
BLAKE2b-256 | 761c267d12141efebe63236d0ec89db39e02c0cc5a005a3ef096c5b6770fee7d |