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判断值是否在list或set中的性能对比分析
Apr 16 Python
Python如何通过subprocess调用adb命令详解
Aug 27 Python
详解python函数的闭包问题(内部函数与外部函数详述)
May 17 Python
python修改字典键(key)的方法
Aug 05 Python
详解python中的index函数用法
Aug 06 Python
python实现的按要求生成手机号功能示例
Oct 08 Python
详解Pycharm出现out of memory的终极解决方法
Mar 03 Python
对python中各个response的使用说明
Mar 28 Python
jupyter notebook运行命令显示[*](解决办法)
May 18 Python
pandas创建DataFrame的7种方法小结
Jun 14 Python
python爬虫爬取网页数据并解析数据
Sep 18 Python
Python调用腾讯API实现人脸身份证比对功能
Apr 04 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/10/09 PHP
PHP页面间传递参数实例代码
2008/06/05 PHP
php搜索文件程序分享
2015/10/30 PHP
PHP调试及性能分析工具Xdebug详解
2017/02/09 PHP
PHP等比例压缩图片的实例代码
2018/07/26 PHP
iframe里的页面禁止右键事件的方法
2014/06/10 Javascript
Flexigrid在IE下不显示数据的有效处理方法
2014/09/04 Javascript
jQuery将多条数据插入模态框的示例代码
2014/09/25 Javascript
node.js中的events.emitter.removeListener方法使用说明
2014/12/10 Javascript
jquery实现的淡入淡出下拉菜单效果
2015/08/25 Javascript
jQuery中hover方法搭配css的hover选择器,实现选中元素突出显示方法
2017/05/08 jQuery
js实现图片旋转 js滚动鼠标中间对图片放大缩小
2017/07/05 Javascript
初识 Vue.js 中的 *.Vue文件
2017/11/22 Javascript
Vue中使用create-keyframe-animation与动画钩子完成复杂动画
2019/04/09 Javascript
JS document对象简单用法完整示例
2020/01/14 Javascript
[01:05:32]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第一局
2016/03/04 DOTA
[00:15]TI9观赛名额抽取
2019/07/10 DOTA
Python字符串处理实现单词反转
2017/06/14 Python
python 矩阵增加一行或一列的实例
2018/04/04 Python
在cmd命令行里进入和退出Python程序的方法
2018/05/12 Python
python库lxml在linux和WIN系统下的安装
2018/06/24 Python
使用Python AIML搭建聊天机器人的方法示例
2018/07/09 Python
Python中sorted()排序与字母大小写的问题
2020/01/14 Python
Python 面向对象之类class和对象基本用法示例
2020/02/02 Python
新秀丽拉杆箱美国官方网站:Samsonite美国
2016/07/25 全球购物
舒适的豪华鞋:Taryn Rose
2018/05/03 全球购物
Yves Rocher捷克官方网站:植物化妆品的创造者
2019/07/31 全球购物
国际贸易专业自荐信
2014/06/10 职场文书
中国梦口号
2014/06/13 职场文书
标准毕业生自荐信
2014/06/24 职场文书
超市优秀员工获奖感言
2014/08/15 职场文书
2015年预算员工作总结
2015/05/14 职场文书
导盲犬小Q观后感
2015/06/11 职场文书
道士塔读书笔记
2015/06/30 职场文书
公司晚宴祝酒词
2015/08/11 职场文书
Python 中的单分派泛函数你真的了解吗
2021/06/22 Python