基于描述符的数据类实现
项目描述
__init__ZnInit -基于描述符的自动生成
该包为dataclass类似结构提供了一个基类,并添加了Descriptors。__init__主要功能是根据选定的描述符自动生成仅关键字。描述符可以例如覆盖__set__或__get__具有与它们相关联的自定义元数据。ZnTrack使用该ZnInit包来启用从文件中延迟加载数据以及区分不同类型的描述符,例如或. 可以在目录中找到一个示例。zn.paramszn.outputsexamples
例子
最简单的用例是复制类似数据类的结构。
from zninit import ZnInit, Descriptor
class Human(ZnInit):
name: str = Descriptor()
language: str = Descriptor("EN")
# This will generate the following init:
def __init__(self, *, name, language="EN"):
self.name = name
self.language = language
fabian = Human(name="Fabian")
# or
fabian = Human(name="Fabian", language="DE")
using 的好处在于ZnInit使用描述符。您可以对类进行子zninit.Descriptor类化,并且只将某些 kwargs 添加__init__到init_descriptors: list. 此外,还有一种post_init方法可用于在初始化类后立即运行代码。
from zninit import ZnInit, Descriptor
class Input(Descriptor):
"""A Parameter"""
class Metric(Descriptor):
"""An Output"""
class Human(ZnInit):
init_descriptors = [Input] # only add Input descriptors to the __init__
name: str = Input()
language: str = Input("DE")
date: str = Metric() # will not appear in the __init__
def post_init(self):
self.date = "2022-09-16"
julian = Human(name="Julian")
print(julian) # Human(language='DE', name='Julian')
print(julian.date) # 2022-09-16
一个好处ZnInit是它还允许继承。
from zninit import ZnInit, Descriptor
class Animal(ZnInit):
age: int = Descriptor()
class Cat(Animal):
name: str = Descriptor()
billy = Cat(age=4, name="Billy")
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
zninit-0.1.1.tar.gz
(11.3 kB
查看哈希)
内置分布
zninit-0.1.1-py3-none-any.whl
(11.9 kB
查看哈希)