Python3.7dataclass使用指南

作者: 云计算机网 分类: 云主机 发布时间: 2017-06-10 07:46

本文将带你走进Python3.7的新特性dataclass,通过本文你将学会dataclass的使用并避免踏入某些陷阱。

dataclass简介 dataclass的使用 定义一个dataclass 深入dataclass装饰器 数据类的基石dataclasses.field 一些常用函数 dataclass继承 总结
dataclass简介

dataclass的定义位于PEP-557,根据定义一个dataclass是指一个带有默认值的可变的namedtuple,广义的定义就是有一个类,它的属性均可公开访问,可以带有默认值并能被修改,而且类中含有与这些属性相关的类方法,那么这个类就可以称为dataclass,再通俗点讲,dataclass就是一个含有数据及操作数据方法的容器。

乍一看可能会觉得这个概念不就是普通的class么,然而还是有几处不同:

    相比普通class,dataclass通常不包含私有属性,数据可以直接访问 dataclass的repr方法通常有固定格式,会打印出类型名以及属性名和它的值 dataclass拥有__eq____hash__魔法方法 dataclass有着模式单一固定的构造方式,或是需要重载运算符,而普通class通常无需这些工作

基于上述原因,通常自己实现一个dataclass是繁琐而无聊的,而dataclass单一固定的行为正适合程序为我们自动生成,于是dataclasses模块诞生了。

配合类型注解语法,我们可以轻松生成一个实现了__init____repr____cmp__等方法的dataclass:

from dataclasses import dataclass

@dataclass
class InventoryItem:
    '''Class for keeping track of an item in inventory.'''
    name: str
    unit_price: float
    quantity_on_hand: int = 0

    def total_cost(self) -gt; float:
        return self.unit_price * self.quantity_on_hand

同时使用dataclass也有一些好处,它比namedtuple更灵活。同时因为它是一个常规的类,所以你可以享受继承带来的便利。

dataclass的使用

我们分x步介绍dataclass的使用,首先是如何定义一个dataclass。

定义一个dataclass

dataclasses模块提供了一个装饰器帮助我们定义自己的数据类:

@dataclass
class Lang:
    """a dataclass that describes a programming language"""
    name: str = 'python'
    strong_type: bool = True
    static_type: bool = False
    age: int = 28

我们定义了一个描述某种程序语言特性的数据类Lang,在接下来的例子中我们都会用到这个类。

在数据类被定义后,会根据给出的类型注解生成一个如下的初始函数:

def __init__(self, name: str='python',
            strong_type: bool=True,
            static_type: bool=False,
            age: int=28):
    self.name = name
    self.strong_type = strong_type
    self.static_type = static_type
    self.age = age

可以看到初始化操作都已经自动生成了,让我们试用一下:

  •   本文主要给大家详细的介绍了对于无线网络维护,我们主要从哪几个方面进行,这里给大家进行了详细说明,相信看过此文会对你有所帮助。

      在无线网络管理中,非常重要也是需要丰富经验的一块领域就是无线网络维护和无线网络优化。这是做好无线网络竞争的必备功课,那么更好的网络性能必然能吸引大量的用户,所以,管理维护方面是一点也不能放松的。那么本文就将为大家详细介绍一下相关的内容。

      如何提高网络服务质量,增强竞争力呢?我认为必须既要加强基础维护,确保设备完好;又要不断优化网络,提高服务质量?

      一 无线网络维护工作的划分

      按照工作性质不同,可将无线网络维护工作划分为两部分:基础维护和网络优化?

      基础维护是指按照移动通信网络维护规程,周期性地对无线网主设备及其配套设备所进行的日常维护和巡视检查,包括清理设备及机房环境卫生以及设备的抢修和应急等工作,主要目的是通过日常无线网络维护及早发现设备问题,排除故障,确保设备完好?

      网络优化是在设备完好的基础上,借助于测试工具和分析软件通过诸如站址?载频配置?天线高度?俯仰角?方位角?中继的配备以及BSC数据库的设置等网络参数的调整,达到最佳的组合,提高网络服务质量,增强网络竞争力的高层次的无线网络维护工作,是无线网络维护中较为关键的环节?

      二 基础无线网络维护是网络维护工作的根基,是取得良好的网络服务质量的前提和保障

      任何设备从开通的第一天起,就受到各种各样环境因素的影响?对移动通信设备来讲,影响设备正常工作的因素可分为外部因素和内部因素,外部因素有电力?传输?机房的温度?湿度?灰尘?以及水?火?雷?盗等;内部因素有设备本身元器件的老化?软件故障和参数设置等,诸多因素使得暴露或潜伏的故障伴随着设备的运行?基础无线网络维护工作不仅需要排除已发故障,还要排除潜在的隐患,做好故障的预防工作,即俗话说防患于未然?可见,基础维护是维护工作的重中之重?

      1基础维护是设备完好的根本保证

      根据工作的性质分类,基础维护可分为清网排障和日常维护?

      清网排障是指集中处理网上问题,主要是因工程建设及网络割接遗留的问题,更新设备档案资料,为日常维护和网络优化服务?

      工程施工会改变网络参数,而工程规划又未必能充分体现不断变化的网络环境;模块的缺损?软硬件版本之间不兼容和无线规划的细微问题,均会影响网络通信质量?因此需要在工程或网络重大变更之后,及时清网排障,合理调整网络参数,并健全设备档案资料?#p#分页标题#e#

      日常无线网络维护是指按照每种设备不同的检测项目和周期进行巡视检查,改善设备运行环境,以及时发现隐患,抢修设备的过程?只有加强日常维护,才能及时发现问题,缩短故障时间,避免重大的通信事故发生,有效地保持设备完好?

      2基础无线网络维护是网络优化的基础

      任何网络优化工作必须以设备完好为基础,因为网络参数的调整必须符合网络实际情况,在设备完好率不理想的情况下所做的网络优化调整,即便能使各项网络指标达到较高水平,网络服务质量取得较大改善;但是,在排除了设备故障,完好率提高以后,精心调整的参数还能符合网络现状吗,所做的优化工作将前功尽弃?

      3基础无线网络维护是保持网络优化成果的重要环节

      通过网络优化,各项参数调整到最佳状态,网络服务质量自然大大改善,如果设备完好得不到保证,优化成效又会功亏一篑?

      安徽移动的移动通信网发展到目前水平,小区切换关系?网络结构较为复杂,频率复用更为紧凑,无线网络质量在更大的程度上依赖于基站设备的完好率?基站载频故障会改变频率复用关系,破坏正常的切换秩序,产生系统内干扰,影响话音品质,造成TCH掉话?拥塞,引起话务分布不均衡,严重影响无线网络服务质量?上图为合肥BSC1在六安路基站出现故障前后,各项网络指标的比对?可见,市区基站网络指标非常依赖于设备的完好?所以,良好的优化成果必须以良好的基础无线网络维护为保障,才能尽善尽美地提供一个高质量的无线网络?

  • 相关推荐:

  • 无线网络维护必知的几个
  • photoshop制作金属质感艺术
  • 基础正则表达式详述
  • C++虚函数在g++中的实现分
  • C语言中的结构体和共用
  • Python中的特殊方法:
  • Win10新手入门:全新开始
  • 网站内容禁止违规转载,转载授权联系中国云计算网