实现Python构造函数重载效果
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构造函数重载效果相关推荐
- python代码案例详解-Python运算符重载详解及实例代码
Python运算符重载 Python语言提供了运算符重载功能,增强了语言的灵活性,这一点与C++有点类似又有些不同.鉴于它的特殊性,今天就来讨论一下Python运算符重载. Python语言本身提供了 ...
- 一篇文章带你了解Python运算符重载
回复"python"即可获赠从入门到进阶共10本电子书 今 日 鸡 汤 不堪玄鬓影,来对白头吟. 您可以根据所使用的操作数来更改Python中运算符的含义.这种做法称为运算符重载, ...
- [转载] python 等号 重载_python运算符重载2
参考链接: Python运算符重载 1.重载构造函数和减法运算__init__,__sub__ #file number.py class Number: def __init__(self,data ...
- [转载] python 运算符重载有什么用_Python运算符重载用法实例分析
参考链接: Python运算符重载 本文实例讲述了Python运算符重载用法.分享给大家供大家参考.具体如下: 在Python语言中提供了类似于C++的运算符重在功能: 一下为Python运算符重在调 ...
- python叫什么-什么叫Python运算符重载
什么叫Python运算符重载 Python中每个数据类型都有其独特的操作方法,例如列表类型支持直接做加法操作实现添加元素的功能,字符串类型支持直接做加法实现字符串的拼接功能,也就是说,同样的运算符对于 ...
- python 运算符重载_《fluent python》第 13 章 正确重载运算符
引言 有些事情让我不安,比如运算符重载.我决定不支持运算符重载,这完全是个人选择,因为我见过太多 C++ 程序员滥用它--James Gosling(Java 之父) ps: 运算符重载它不香吗 写在 ...
- 《从零开始学Swift》学习笔记(Day 39)——构造函数重载
原创文章,欢迎转载.转载请注明:关东升的博客 构造函数作为一种特殊方法,也可以重载. Swift中构造函数可以多个,他们参数列表和返回值可以不同,这些构造函数构成重载. 示例代码如下: class ...
- python 构造函数传参_C++和python混合编程之在python类构造函数中传参方法
C++和python混合编程 零.前言 一.说明 二.测试代码 1.C++代码 2.python代码 三.运行结果 零.前言 C++是一门高效率的语言,Python是一门简单易学的脚本语言,现在Pyt ...
- python构造函数在创建对象时,没有自动执行,object has no attribute
新手踩坑,python构造函数在创建对象时,没有自动执行,object has no attribute 刚开始学python,照着书敲,就离谱,一直在报错object has no attribut ...
最新文章
- 使用MyEclipse开发Java EE应用:用XDoclet创建EJB 2 Session Bean项目(四)
- 计算机发展最新趋势素材,计算机方面论文范文素材,与关于计算机科学与技术的趋势探究相关论文网...
- oracle中执行自带脚本,oracle自带脚本
- 计算机网络对我们思维的影响,计算机网络教学中学生计算思维的培养
- 标记三维点_SSW系统在地下大型停车场三维建模中的应用研究
- python自学行吗-有编程基础Python自学行吗?
- 【NOIP1999】【Luogu1020】导弹拦截
- 谷歌了java集成开发_Spring整合Kaptcha谷歌验证码工具的开发步骤
- 解决办法:无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用)
- Nginx代理Grafana常见错误
- 微信小程序口令红包-语音识别
- [2007-03下](Lgz独家秘笈)利用ACDSee5编辑,归档多部DC拍摄的图片
- 蕃茄田宋姝梦:科技赋能时代,儿童在线艺术教育的思考
- 小米等部分手机机型不弹出对话框问题
- wkwebview 预览文件_iOS之H5调用系统相册相机浏览文件
- JavaScript中的变量声明
- http://www.cnblogs.com/dolphin0520/p/3923167.html
- C语言startup()函数,WSAStartup()函数以及DLL的加载
- Halcon学习之图像采集
- 什么是价值琏分析法以及价值链分析的基本原理