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中使用Flask、MongoDB搭建简易图片服务器
Feb 04 Python
Python中处理字符串之islower()方法的使用简介
May 19 Python
对python中return和print的一些理解
Aug 18 Python
解决python测试opencv时imread导致的错误问题
Jan 26 Python
使用IDLE的Python shell窗口实例详解
Nov 19 Python
使用Pycharm分段执行代码
Apr 15 Python
Python浮点型(float)运算结果不正确的解决方案
Sep 22 Python
Python中openpyxl实现vlookup函数的实例
Oct 28 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
Nov 10 Python
Python在后台自动解压各种压缩文件的实现方法
Nov 10 Python
详解appium自动化测试工具(monitor、uiautomatorviewer)
Jan 27 Python
用PYTHON去计算88键钢琴的琴键频率和音高
Apr 10 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发明人谈MVC和网站设计架构 貌似他不支持php用mvc
2011/06/04 PHP
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
2013/06/18 PHP
php curl post 时出现的问题解决
2014/01/30 PHP
Laravel+jQuery实现AJAX分页效果
2016/09/14 PHP
php面向对象重点知识分享
2019/09/27 PHP
JavaScript中的集合及效率
2010/01/08 Javascript
jQuery标签替换函数replaceWith()的使用例子
2014/08/28 Javascript
深入浅析JavaScript中prototype和proto的关系
2015/11/15 Javascript
微信小程序使用第三方库Underscore.js步骤详解
2016/09/27 Javascript
功能强大的jquery.validate表单验证插件
2016/11/07 Javascript
js中获取键盘按下键值event.keyCode、event.charCode和event.which的兼容性详解
2017/03/15 Javascript
Angular 通过注入 $location 获取与修改当前页面URL的实例
2017/05/31 Javascript
requirejs按需加载angularjs文件实例
2017/06/08 Javascript
移动前端图片压缩上传的实例
2017/12/06 Javascript
JavaScript实现AOP详解(面向切面编程,装饰者模式)
2017/12/19 Javascript
js和jQuery以及easyui实现对下拉框的指定赋值方法
2018/01/23 jQuery
微信小程序实时聊天WebSocket
2018/07/05 Javascript
微信小程序http连接访问解决方案的示例
2018/11/05 Javascript
JavaScript Window窗口对象属性和使用方法
2020/01/19 Javascript
python中文件变化监控示例(watchdog)
2017/10/16 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
使用OpenCV实现人脸图像卡通化的示例代码
2021/01/15 Python
python工具快速为音视频自动生成字幕(使用说明)
2021/01/27 Python
Bobbi Brown芭比波朗美国官网:化妆师专业彩妆保养品品牌
2016/08/18 全球购物
市场策划求职信
2014/08/07 职场文书
研修心得体会
2014/09/04 职场文书
专项资金申请报告
2015/05/15 职场文书
交通事故被告答辩状
2015/05/22 职场文书
入党群众意见范文
2015/06/02 职场文书
田径运动会通讯稿
2015/07/18 职场文书
四年级数学教学反思
2016/02/16 职场文书
python tqdm用法及实例详解
2021/06/16 Python
Vue.js中v-bind指令的用法介绍
2022/03/13 Vue.js
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL
疑《守望先锋2》A测截图泄露 或将推出新模式、新界面
2022/04/03 其他游戏
victoriaMetrics库布隆过滤器初始化及使用详解
2022/04/05 Golang