Python实现动态给类和对象添加属性和方法操作示例


Posted in Python onFebruary 29, 2020

本文实例讲述了Python实现动态给类和对象添加属性和方法操作。分享给大家供大家参考,具体如下:

动态给类和对象添加属性

定义一个Person类

class Person(object):
 def __init__(self, name):
  self.name = name
  • 给对象添加属性
# 创建2个Person,分别为p1,p2
p1 = Person('amy')
print(p1.name)
p1.age = 10   # 给p1对象添加属性
print(p1.age)  # 输出10
p2 = Person('anne')
print(p2.name)  
p2.age = 18   # 给p2对象添加属性
print(p2.age)  # 输出18

运行结果:

amy
10
anne
18

  • 给类添加属性
p1 = Person('amy')
p2 = Person('anne')
Person.sex = 'female'
print(p1.sex) # 输出 female
print(p2.sex) # 输出 female
p2.sex = 'male'
print(p2.sex) # 输出 male

运行结果:

female
female
male

动态给类和对象添加方法

  • 动态给类添加方法
# 在类的外部定义一个sleep函数
p1 = Person('amy')
p2 = Person('anne')
def sleep(self):
 print('%s sleep' % (self.name))
Person.sleep = sleep
Person.sleep(p1)  # 输出 amy sleep
Person.sleep(p2)  # 输出 anne sleep

运行结果:

amy sleep
anne sleep

  • 给对象添加方法
import types # 如果是给对象动态添加方法,需要导入types模块
p = Person('amy')
def eat(self):
 print('%s eat' % (self.name))
p.eat = types.MethodType(eat, p) # 调用MethodType()函数,参数1:方法名,参数2:对象名
p.eat()    # 输出 amy eat

运行结果:

amy eat

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python生成随机验证码(中文验证码)示例
Apr 03 Python
Python实现的简单文件传输服务器和客户端
Apr 08 Python
在Python的Django框架中生成CSV文件的方法
Jul 22 Python
Python中使用asyncio 封装文件读写
Sep 11 Python
Python实现PS图像调整黑白效果示例
Jan 25 Python
python将每个单词按空格分开并保存到文件中
Mar 19 Python
python使用opencv实现马赛克效果示例
Sep 28 Python
Tensorflow中tf.ConfigProto()的用法详解
Feb 06 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
Mar 13 Python
字典算法实现及操作 --python(实用)
Mar 31 Python
Python词云的正确实现方法实例
May 08 Python
python numpy中multiply与*及matul 的区别说明
May 26 Python
Python使用type动态创建类操作示例
Feb 29 #Python
Django框架静态文件处理、中间件、上传文件操作实例详解
Feb 29 #Python
Python编程快速上手——强口令检测算法案例分析
Feb 29 #Python
Python编程快速上手——strip()函数的正则表达式实现方法分析
Feb 29 #Python
python通用读取vcf文件的类(复制粘贴即可用)
Feb 29 #Python
Python编程快速上手——疯狂填词程序实现方法分析
Feb 29 #Python
Python使用GitPython操作Git版本库的方法
Feb 29 #Python
You might like
最令PHP初学者头痛的十四个问题
2006/07/12 PHP
利用PHP扩展vld查看PHP opcode操作步骤
2013/03/04 PHP
win7下memCache的安装过程(具体操作步骤)
2013/06/28 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
2014/04/18 PHP
PHP实现即时输出、实时输出内容方法
2015/05/27 PHP
Composer设置忽略版本匹配的方法
2016/04/27 PHP
PHP下的浮点运算不准的解决方法
2016/10/27 PHP
Aster vs Newbee BO5 第三场2.19
2021/03/10 DOTA
JavaScript 闭包在封装函数时的简单分析
2009/11/28 Javascript
javascript prototype原型操作笔记
2009/12/07 Javascript
JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
2011/01/06 Javascript
js indexOf()定义和用法
2012/10/21 Javascript
jQuery筛选器children()案例详解(图文)
2013/02/17 Javascript
带左右箭头图片轮播的JS代码
2013/12/18 Javascript
动态读取JSON解析键值对的方法
2014/06/03 Javascript
自己动手手写jQuery插件总结
2015/01/20 Javascript
浅谈js的ajax的异步和同步请求的问题
2016/10/07 Javascript
js实现图片懒加载效果
2017/07/17 Javascript
Angularjs之ngModel中的值验证绑定方法
2018/09/13 Javascript
vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例
2018/10/31 Javascript
微信小程序接入腾讯云验证码的方法步骤
2020/01/07 Javascript
关于element的表单组件整理笔记
2021/02/05 Javascript
Python中实现对list做减法操作介绍
2015/01/09 Python
python在非root权限下的安装方法
2018/01/23 Python
Python实现JSON反序列化类对象的示例
2018/01/31 Python
Python多线程扫描端口代码示例
2018/02/09 Python
python使用pip安装SciPy、SymPy、matplotlib教程
2019/11/20 Python
利用Python计算KS的实例详解
2020/03/03 Python
python 实现弹球游戏的示例代码
2020/11/17 Python
泰国网上购物:Shopee泰国
2018/09/14 全球购物
德国大型箱包和皮具商店:Koffer
2019/10/01 全球购物
美国室内盆栽植物购买网站:Plants.com
2020/04/24 全球购物
《都江堰》教学反思
2014/02/07 职场文书
领导班子四风查摆对照检查材料思想汇报
2014/10/05 职场文书
教师节感谢信
2015/01/22 职场文书
个性与发展自我评价
2015/03/06 职场文书