zoukankan      html  css  js  c++  java
  • python:dataclass装饰器详

    @dataclass
    class StarWarsMovie:
     title: str
     episode_id: int
     opening_crawl: str
     director: str
     producer: str
     release_date: datetime
     characters: List[str]
     planets: List[str]
     starships: List[str]
     vehicles: List[str]
     species: List[str]
     created: datetime
     edited: datetime
     url: str
    @dataclass
    class Python(Lang):
        tab_size: int = 4
        is_script: bool = True
    
    >>> Python()
    Python(name='python', strong_type=True, static_type=False, age=28, tab_size=4, is_script=True)
    
    @dataclass
    class Base:
        x: float = 25.0
        y: int = 0
    
    @dataclass
    class C(Base):
        z: int = 10
        x: int = 15
    
    >>> C()
    C(x=15, y=0, z=10)

     - dataclass通常情况下是unhashable的,因为默认生成的`__hash__`是`None`,所以不能用来做字典的key,如果有这种需求,那么应该指定你的数据类为frozen dataclass

    - 小心当你定义了和`dataclass`生成的同名方法时会引发的问题 - 当使用可变类型(如list)时,应该考虑使用`field`的`default_factory`

    - 数据类的属性都是公开的,如果你有属性只需要初始化时使用而不需要在其他时候被访问,请使用`dataclasses.InitVar`

  • 相关阅读:
    B/S---控件属性
    Windows Form -----内容(11)
    C#--Web控件简介
    C#控件基本1
    C#增删改小总结
    C#播放器控件的常用方法介绍
    C#封装---小练
    链接SQL、事务---小总结
    事务-----2
    事务----1
  • 原文地址:https://www.cnblogs.com/DDBD/p/14434736.html
Copyright © 2011-2022 走看看