Python的构造函数是不能重载一个类只能有一个构造函数存在。定义多个构造方法时,实例化类只实例化最后的构造方法,即后面的构造方法会覆盖前面的构造方法,并且会根据最后一个构造方法的形式进行实例化。

但是我们在很多时候,希望可以实现构造函数重载的效果,怎么去实现呢,其实这个问题,python的处理是非常优秀的,即通过关键字参数达到构造函数重载的效果。

在很多时候,对于类的属性,希望它是可扩展的,即达到构造函数重载的效果,具体实现时利用关键字参数编写类的__init__函数。这样后面如果需要扩展类的属性,只需在创建类的实例时要传入关键字参数就可以了。

class A(object):def __init__(self, **kwargs):for key, val in kwargs.items():setattr(self, key, val)a = A(name='xiaoming', sex=0)
#  打印类的属性时使用列表生成式,避免打印一些无关的属性(以‘_’开头)
print(a.name, a.sex, [s for s in a.__dir__() if not s.startswith('_')])

实现Python构造函数重载效果相关推荐

  1. python代码案例详解-Python运算符重载详解及实例代码

    Python运算符重载 Python语言提供了运算符重载功能,增强了语言的灵活性,这一点与C++有点类似又有些不同.鉴于它的特殊性,今天就来讨论一下Python运算符重载. Python语言本身提供了 ...

  2. 一篇文章带你了解Python运算符重载

    回复"python"即可获赠从入门到进阶共10本电子书 今 日 鸡 汤 不堪玄鬓影,来对白头吟. 您可以根据所使用的操作数来更改Python中运算符的含义.这种做法称为运算符重载, ...

  3. [转载] python 等号 重载_python运算符重载2

    参考链接: Python运算符重载 1.重载构造函数和减法运算__init__,__sub__ #file number.py class Number: def __init__(self,data ...

  4. [转载] python 运算符重载有什么用_Python运算符重载用法实例分析

    参考链接: Python运算符重载 本文实例讲述了Python运算符重载用法.分享给大家供大家参考.具体如下: 在Python语言中提供了类似于C++的运算符重在功能: 一下为Python运算符重在调 ...

  5. python叫什么-什么叫Python运算符重载

    什么叫Python运算符重载 Python中每个数据类型都有其独特的操作方法,例如列表类型支持直接做加法操作实现添加元素的功能,字符串类型支持直接做加法实现字符串的拼接功能,也就是说,同样的运算符对于 ...

  6. python 运算符重载_《fluent python》第 13 章 正确重载运算符

    引言 有些事情让我不安,比如运算符重载.我决定不支持运算符重载,这完全是个人选择,因为我见过太多 C++ 程序员滥用它--James Gosling(Java 之父) ps: 运算符重载它不香吗 写在 ...

  7. 《从零开始学Swift》学习笔记(Day 39)——构造函数重载

    原创文章,欢迎转载.转载请注明:关东升的博客   构造函数作为一种特殊方法,也可以重载. Swift中构造函数可以多个,他们参数列表和返回值可以不同,这些构造函数构成重载. 示例代码如下: class ...

  8. python 构造函数传参_C++和python混合编程之在python类构造函数中传参方法

    C++和python混合编程 零.前言 一.说明 二.测试代码 1.C++代码 2.python代码 三.运行结果 零.前言 C++是一门高效率的语言,Python是一门简单易学的脚本语言,现在Pyt ...

  9. python构造函数在创建对象时,没有自动执行,object has no attribute

    新手踩坑,python构造函数在创建对象时,没有自动执行,object has no attribute 刚开始学python,照着书敲,就离谱,一直在报错object has no attribut ...

最新文章

  1. 使用MyEclipse开发Java EE应用:用XDoclet创建EJB 2 Session Bean项目(四)
  2. 计算机发展最新趋势素材,计算机方面论文范文素材,与关于计算机科学与技术的趋势探究相关论文网...
  3. oracle中执行自带脚本,oracle自带脚本
  4. 计算机网络对我们思维的影响,计算机网络教学中学生计算思维的培养
  5. 标记三维点_SSW系统在地下大型停车场三维建模中的应用研究
  6. python自学行吗-有编程基础Python自学行吗?
  7. 【NOIP1999】【Luogu1020】导弹拦截
  8. 谷歌了java集成开发_Spring整合Kaptcha谷歌验证码工具的开发步骤
  9. 解决办法:无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用)
  10. Nginx代理Grafana常见错误
  11. 微信小程序口令红包-语音识别
  12. [2007-03下](Lgz独家秘笈)利用ACDSee5编辑,归档多部DC拍摄的图片
  13. 蕃茄田宋姝梦:科技赋能时代,儿童在线艺术教育的思考
  14. 小米等部分手机机型不弹出对话框问题
  15. wkwebview 预览文件_iOS之H5调用系统相册相机浏览文件
  16. JavaScript中的变量声明
  17. http://www.cnblogs.com/dolphin0520/p/3923167.html
  18. C语言startup()函数,WSAStartup()函数以及DLL的加载
  19. Halcon学习之图像采集
  20. 什么是价值琏分析法以及价值链分析的基本原理

热门文章

  1. Raspberry Pi 与Arduino SPI通信
  2. 计算机,网络,软件,选哪个专业好啊
  3. 用Java输出等腰三角形
  4. 手机租赁分期上征信吗?
  5. 主流分布式文件系统选型,写得太好了!
  6. Archive.org:历史网站查询
  7. AI解读清明上河图--Caption Anything 细粒度可控的图像描述
  8. 1.JAVA中super关键字的使用
  9. Java之super用法
  10. 8年前端与众不同的Vue实战系列,助你成为前端顶级开发者