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入门篇之正则表达式
Oct 20 Python
用Python的线程来解决生产者消费问题的示例
Apr 02 Python
对于Python装饰器使用的一些建议
Jun 03 Python
Python的Tornado框架实现图片上传及图片大小修改功能
Jun 30 Python
python 爬虫出现403禁止访问错误详解
Mar 11 Python
python人民币小写转大写辅助工具
Jun 20 Python
Python实现的排列组合、破解密码算法示例
Apr 12 Python
Django 外键的使用方法详解
Jul 19 Python
python爬虫解决验证码的思路及示例
Aug 01 Python
python实现的发邮件功能示例
Sep 11 Python
使用python制作一个解压缩软件
Nov 13 Python
python基于selenium爬取斗鱼弹幕
Feb 20 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 adodb连接不同数据库
2009/03/19 PHP
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
2014/07/05 PHP
PHP中call_user_func_array回调函数的用法示例
2016/11/26 PHP
php 可变函数使用小结
2018/06/12 PHP
php定期拉取数据对比方法实例
2019/09/22 PHP
Javascript中的var_dump函数实现代码
2009/09/07 Javascript
JQuery伸缩导航练习示例
2013/11/13 Javascript
JS高级调试技巧:捕获和分析 JavaScript Error详解
2014/03/16 Javascript
jquery获取radio值实例
2014/10/16 Javascript
理解javascript模块化
2016/03/28 Javascript
详解JavaScript中的自定义事件编写
2016/05/10 Javascript
JS解决iframe之间通信和自适应高度的问题
2016/08/24 Javascript
AngularJS实用基础知识_入门必备篇(推荐)
2017/07/10 Javascript
express.js中间件说明详解
2019/03/19 Javascript
js console.log打印对象时属性缺失的解决方法
2019/05/23 Javascript
原生js实现贪吃蛇游戏
2020/10/26 Javascript
Vue+Element-U实现分页显示效果
2020/11/15 Javascript
深入讨论Python函数的参数的默认值所引发的问题的原因
2015/03/30 Python
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
django2.0扩展用户字段示例
2019/02/13 Python
详解用Python为直方图绘制拟合曲线的两种方法
2019/08/21 Python
在tensorflow中设置保存checkpoint的最大数量实例
2020/01/21 Python
将数据集制作成VOC数据集格式的实例
2020/02/17 Python
Python select及selectors模块概念用法详解
2020/06/22 Python
Python模拟登录和登录跳转的参考示例
2020/10/30 Python
Urban Outfitters美国官网:美国生活方式品牌
2016/08/26 全球购物
高级技校毕业生自荐信
2013/11/18 职场文书
最新的互联网创业计划书
2014/01/10 职场文书
《永远的白衣战士》教学反思
2014/04/25 职场文书
倡议书范文格式
2014/05/12 职场文书
关于教师节的演讲稿
2014/09/04 职场文书
债务纠纷代理词
2015/05/25 职场文书
高二数学教学反思
2016/02/18 职场文书
入党转正申请自我鉴定
2019/06/25 职场文书
Python时间操作之pytz模块使用详解
2022/06/14 Python