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写的windows服务不能启动的问题
Apr 15 Python
Python中的迭代器漫谈
Feb 03 Python
Python 数据结构之堆栈实例代码
Jan 22 Python
Python实现生成随机日期字符串的方法示例
Dec 25 Python
解决Django加载静态资源失败的问题
Jul 28 Python
python中web框架的自定义创建
Sep 08 Python
Python列表切片常用操作实例解析
Dec 16 Python
TensorBoard 计算图的可视化实现
Feb 15 Python
Python的控制结构之For、While、If循环问题
Jun 30 Python
Python使用urlretrieve实现直接远程下载图片的示例代码
Aug 17 Python
python多线程和多进程关系详解
Dec 14 Python
python通用数据库操作工具 pydbclib的使用简介
Dec 21 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
解析在apache里面给php写虚拟目录的详细方法
2013/06/24 PHP
PHP处理Json字符串解码返回NULL的解决方法
2014/09/01 PHP
PHP 5.6.11中CURL模块问题的解决方法
2016/08/08 PHP
php遍历替换目录下文件指定内容的方法
2016/11/10 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
PHP使用POP3读取邮箱接收邮件的示例代码
2020/07/08 PHP
DIY jquery plugin - tabs标签切换实现代码
2010/12/11 Javascript
JavaScript定义类和对象的方法
2014/11/26 Javascript
jQuery弹出框代码封装DialogHelper
2015/01/30 Javascript
详解jQuery向动态生成的内容添加事件响应jQuery live()方法
2015/11/02 Javascript
JavaScript事件学习小结(五)js中事件类型之鼠标事件
2016/06/09 Javascript
Ext JS动态加载JavaScript创建窗体的方法
2016/06/23 Javascript
JQuery DIV 动态隐藏和显示的方法
2016/06/23 Javascript
jQuery监听浏览器窗口大小的变化实例
2017/02/07 Javascript
vuejs父子组件之间数据交互详解
2017/08/09 Javascript
浅谈react-native热更新react-native-pushy集成遇到的问题
2017/09/30 Javascript
Node.js实现发送邮件功能
2017/11/06 Javascript
javascript用rem来做响应式开发
2018/01/13 Javascript
使用webpack搭建react开发环境的方法
2018/05/15 Javascript
详解webpack4升级指南以及从webpack3.x迁移
2018/06/12 Javascript
取消Bootstrap的dropdown-menu点击默认关闭事件方法
2018/08/10 Javascript
vue实现的多页面项目如何优化打包的步骤详解
2020/07/19 Javascript
vue element实现表格合并行数据
2020/11/30 Vue.js
[02:04]2014DOTA2国际邀请赛 DK一个时代的落幕
2014/07/21 DOTA
[41:21]夜魇凡尔赛茶话会 第三期02:看图识人
2021/03/11 DOTA
使用Python生成XML的方法实例
2017/03/21 Python
Python实现螺旋矩阵的填充算法示例
2017/12/28 Python
python中plot实现即时数据动态显示方法
2018/06/22 Python
在ubuntu16.04中将python3设置为默认的命令写法
2018/10/31 Python
python分批定量读取文件内容,输出到不同文件中的方法
2018/12/08 Python
Python识别html主要文本框过程解析
2020/02/18 Python
Ref与out有什么不同
2012/11/24 面试题
Shell编程面试题
2012/05/30 面试题
Linux内核产生并发的原因
2016/11/08 面试题
MySQL常见优化方案汇总
2022/01/18 MySQL
mysql性能优化以及配置连接参数设置
2022/05/06 MySQL