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遍历类中所有成员的方法
Mar 18 Python
Python素数检测的方法
May 11 Python
Python简单生成随机数的方法示例
Mar 31 Python
Linux下python3.7.0安装教程
Jul 30 Python
Python文件打开方式实例详解【a、a+、r+、w+区别】
Mar 30 Python
Python QQBot库的QQ聊天机器人
Jun 19 Python
python版百度语音识别功能
Jul 09 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
Aug 12 Python
Python itertools.product方法代码实例
Mar 27 Python
基于python实现计算且附带进度条代码实例
Mar 31 Python
python操作链表的示例代码
Sep 27 Python
Python3+Django get/post请求实现教程详解
Feb 16 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 Pear 安装及使用
2009/03/19 PHP
php 指定范围内多个随机数代码实例
2016/07/18 PHP
laravel通过创建自定义artisan make命令来新建类文件详解
2017/08/17 PHP
jquery easyui的tabs使用时的问题
2010/03/23 Javascript
用jQuery模拟select下拉框的简单示例代码
2014/01/26 Javascript
javascript基本类型详解
2014/11/28 Javascript
node.js中的fs.lstat方法使用说明
2014/12/16 Javascript
node.js中的fs.exists方法使用说明
2014/12/17 Javascript
JavaScript更改原始对象valueOf的方法
2015/03/19 Javascript
iPhone手机上搭建nodejs服务器步骤方法
2015/07/06 NodeJs
JQuery入门基础小实例(1)
2015/09/17 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
AngularJS向后端ASP.NET API控制器上传文件
2016/02/03 Javascript
JS中的进制转换以及作用
2016/06/26 Javascript
Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
2016/11/21 NodeJs
微信小程序 form组件详解及简单实例
2017/01/10 Javascript
解决layui laydate 时间控件一闪而过的问题
2019/09/28 Javascript
Javascript和jquery在selenium的使用过程
2019/10/31 jQuery
javascript中导出与导入实现模块化管理教程
2020/12/03 Javascript
使用python编写批量卸载手机中安装的android应用脚本
2014/07/21 Python
python批量修改文件编码格式的方法
2018/05/31 Python
python多进程提取处理大量文本的关键词方法
2018/06/05 Python
Python loguru日志库之高效输出控制台日志和日志记录
2020/03/07 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
2020/05/17 Python
Python中的__init__作用是什么
2020/06/09 Python
python数据类型强制转换实例详解
2020/06/22 Python
python 用struct模块解决黏包问题
2020/11/07 Python
澳洲本土太阳镜品牌:Quay Australia
2019/07/29 全球购物
德国户外商店:eXXpozed
2020/07/25 全球购物
电子信息毕业生自荐信
2013/11/16 职场文书
应届优秀本科大学毕业生自我鉴定
2014/01/21 职场文书
国际商贸专业自荐信
2014/06/09 职场文书
公司试用期员工自我评价
2014/09/17 职场文书
毕业生党员个人总结
2015/02/14 职场文书
交通事故被告代理词
2015/05/23 职场文书
2019年浪漫婚礼证婚词
2019/06/27 职场文书