首页 > 其他分享 >简化数据结构的初始化过程

简化数据结构的初始化过程

时间:2022-09-23 15:13:15浏览次数:56  
标签:__ 初始化 fields self args len 简化 ._ 数据结构

避免在每新建类时,都要重复实现构造器,因此可以定义一个公共基类,在基类中实现实例属性的初始化规则,此后在派生类中,只需要指定属性字段即可

 1 class Init:
 2     _fields = []
 3 
 4     def __init__(self, *args, **kwargs):
 5         if len(args) > len(self._fields):
 6             raise TypeError
 7         for k, v in zip(self._fields, args):
 8             setattr(self, k, v)
 9         for k in self._fields[len(args):]:
10             setattr(self, k, kwargs.pop(k))
11         if len(kwargs):
12             raise TypeError
13 
14 
15 class Valley(Init):
16     _fields = ["姓名", "年纪"]
17 
18 
19 v = Valley("shixiaogu", 年纪=25)
20 print(v.__dict__)

标签:__,初始化,fields,self,args,len,简化,._,数据结构
From: https://www.cnblogs.com/shixiaogu/p/16722795.html

相关文章

  • maven项目的初始化
    Maven自动导入和配置jar包官网下载bin.zip核心思想:约定大于配置有约束不要去违反配置环境变量M2_HOMEmaven目录下的bin目录MAVEN_HOMEmaven的目录在系统pa......
  • 王道-考研-数据结构-线索二叉树
    线索二叉树的构造常用的是中序线索二叉树。寻找前驱结点:若左指针为线索,则其指向结点为前驱结点。若左指针为左孩子,则其左子树的最右侧结点为前驱结点。寻找后继结点......
  • 数据结构:线性表
    线性表线性表(List):零个或多个数据元素的有限序列。首先它是一个序列。也就是说,元素之间是有顺序的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他每个元素都......
  • 算法 玩转数据结构 2-2 二次封装属于我们自己的数组
    1重点关注1.1索引使用数组最大的优点:快速查询。scores[2]·数组最好应用于“索引有语意”的情况。·但并非所有有语意的索引都适用于数组(例如,以身份......
  • 算法 玩转数据结构 2-1 使用java中的数组
    1重点关注1.1idea新建Java项目newproject--》java--》选择jdk--》next--》createprojectfromtemplate--》Commandlineapp--》next--》输入工程名......
  • 代码阅读题-Java初始化顺序
    题目如下按理来说,初始化顺序应该是:静态代码块静态变量在静态代码块语句之前执行,因为向前引用非法(静态变量在静态代码块后执行)main()构造代码块构造方法但是......
  • 认识Java的整形数据结构
    摘要:java中一切都是对象,为什么int不用创建对象实例化,而可以直接使用?本文分享自华为云社区《【Java】对基本类型-整型数据结构的认识》,作者:huahua.Dr。整型数据类型有两......
  • 【数据结构】跳表
    一、基本概念1.1定义跳表(SkipList):增加了向前指针的链表叫做指针。跳表全称叫做跳跃表,简称跳表。跳表是一个随机化的数据结构,实质是一种可以进行二分查找的有序链表。......
  • 数据结构算法(一)之二分查找
    internalclassProgram{staticvoidMain(string[]args){varn=50;varrandom=newRandom();while......
  • centos8系统初始化一键优化脚本
    centos8系统初始化一键优化脚本color(){RES_COL=60MOVE_TO_COL="echo-en\\033[${RES_COL}G"SETCOLOR_SUCCESS="echo-en\\033[1;32m"......