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制作自动推送微信消息提醒的备忘录功能
Sep 06 Python
使用PyCharm创建Django项目及基本配置详解
Oct 24 Python
详解Python logging调用Logger.info方法的处理过程
Feb 12 Python
Python语法分析之字符串格式化
Jun 13 Python
Python内置类型性能分析过程实例
Jan 29 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
Feb 10 Python
python实现微信打飞机游戏
Mar 24 Python
pandas 强制类型转换 df.astype实例
Apr 09 Python
解决python中显示图片的plt.imshow plt.show()内存泄漏问题
Apr 24 Python
Django ORM 查询表中某列字段值的方法
Apr 30 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
Sep 03 Python
PyQt5实现多张图片显示并滚动
Jun 11 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
实时抓取YAHOO股票报价的代码
2006/10/09 PHP
我的php学习笔记(毕业设计)
2012/02/21 PHP
PHP使用PDO操作数据库的乱码问题解决方法
2016/04/08 PHP
Apache PHP MySql安装配置图文教程
2016/08/27 PHP
PHP实现Unicode编码相互转换的方法示例
2020/11/17 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
laravel获取不到session的三种解决办法【推荐】
2018/09/16 PHP
javascript语句中的CDATA标签的意义
2007/05/09 Javascript
javascript Prototype 对象扩展
2009/05/15 Javascript
js对字符的验证方法汇总
2015/02/04 Javascript
jquery利用命名空间移除绑定事件的方法
2015/03/11 Javascript
JavaScript通过事件代理高亮显示表格行的方法
2015/05/27 Javascript
在JavaScript中使用对数Math.log()方法的教程
2015/06/15 Javascript
javascript下使用Promise封装FileReader
2016/02/19 Javascript
Bootstrap选项卡与Masonry插件的完美结合
2016/07/06 Javascript
Vue自定义指令拖拽功能示例
2017/02/17 Javascript
JS实现一个简单的日历
2017/02/22 Javascript
webpack4 SCSS提取和懒加载的示例
2018/09/03 Javascript
详解用场景去理解函数柯里化(入门篇)
2019/04/11 Javascript
vue 导航锚点_点击平滑滚动,导航栏对应变化详解
2020/08/10 Javascript
python之文件的读写和文件目录以及文件夹的操作实现代码
2016/08/28 Python
python 读写中文json的实例详解
2017/10/29 Python
python逐行读写txt文件的实例讲解
2018/04/03 Python
Python中的引用知识点总结
2019/05/20 Python
Python bisect模块原理及常见实例
2020/06/17 Python
python pip如何手动安装二进制包
2020/09/30 Python
python 基于opencv实现图像增强
2020/12/23 Python
分享CSS3制作卡片式图片的方法
2016/07/08 HTML / CSS
工会主席岗位责任制
2014/02/11 职场文书
高三上学期学习自我评价
2014/04/23 职场文书
拉歌口号大全
2014/06/13 职场文书
感情真挚的毕业生求职信
2014/07/19 职场文书
品质保证书格式
2015/02/28 职场文书
六一儿童节园长致辞
2015/07/31 职场文书
Python实现位图分割的效果
2021/11/20 Python
SQL Server的存储过程与触发器以及系统函数和自定义函数
2022/04/10 SQL Server