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之大话题小函数(1)
Oct 10 Python
django限制匿名用户访问及重定向的方法实例
Feb 07 Python
OpenCV+python手势识别框架和实例讲解
Aug 03 Python
详解爬虫被封的问题
Apr 23 Python
深入浅析python3中的unicode和bytes问题
Jul 03 Python
python3.7环境下安装Anaconda的教程图解
Sep 10 Python
使用Python的turtle模块画国旗
Sep 24 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
Feb 11 Python
pytorch实现CNN卷积神经网络
Feb 19 Python
python 递归调用返回None的问题及解决方法
Mar 16 Python
python怎么删除缓存文件
Jul 19 Python
PyQt中使用QtSql连接MySql数据库的方法
Jul 28 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获取文件夹内文件数的方法
2015/03/12 PHP
Laravel 中获取上一篇和下一篇数据
2015/07/27 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
2016/01/08 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
2016/11/14 PHP
PHP get_html_translation_table()函数用法讲解
2019/02/16 PHP
基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
2010/12/11 Javascript
基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
2013/04/26 Javascript
JSON中双引号的轮回使用过程中一定要小心
2014/03/05 Javascript
js浏览器本地存储store.js介绍及应用
2014/05/13 Javascript
jquery实现图片上传之前预览的方法
2015/07/11 Javascript
在JavaScript中对HTML进行反转义详解
2016/05/18 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
Vue.Draggable实现拖拽效果
2020/07/29 Javascript
10分钟上手vue-cli 3.0 入门介绍
2018/04/04 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
2018/12/13 Javascript
Vue中CSS动画原理的实现
2019/02/13 Javascript
python多线程threading.Lock锁用法实例
2014/11/01 Python
Python脚本实现集群检测和管理功能
2015/03/06 Python
Tensorflow训练模型越来越慢的2种解决方案
2020/02/07 Python
HTML5触摸事件实现移动端简易进度条的实现方法
2018/05/04 HTML / CSS
amazeui模态框弹出后立马消失并刷新页面
2020/08/19 HTML / CSS
NBA欧洲商店(西班牙):NBA Europe Store ES
2019/04/16 全球购物
小学教师的自我评价范例
2013/10/31 职场文书
优秀应届毕业生自荐信
2013/11/16 职场文书
秘书行业自我鉴定范文
2013/12/30 职场文书
《奇妙的国际互联网》 教学反思
2014/02/25 职场文书
制作部班长职位说明书
2014/02/26 职场文书
知名企业招聘广告词大全
2014/03/18 职场文书
仓库规划计划书
2014/04/28 职场文书
中秋晚会策划方案
2014/06/12 职场文书
计算机科学技术自荐信
2014/06/12 职场文书
大专应届毕业生求职信
2014/07/15 职场文书
质量月活动总结
2014/08/26 职场文书
大学生考试作弊检讨书
2014/09/21 职场文书
2019大学生实习报告
2019/06/21 职场文书
nginx中封禁ip和允许内网ip访问的实现示例
2022/03/17 Servers