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连接MySQL并使用fetchall()方法过滤特殊字符
Mar 13 Python
Tensorflow简单验证码识别应用
May 25 Python
selenium+python截图不成功的解决方法
Jan 30 Python
Python3实现从排序数组中删除重复项算法分析
Apr 03 Python
Linux下远程连接Jupyter+pyspark部署教程
Jun 21 Python
Python读取excel文件中带公式的值的实现
Apr 17 Python
python多进程使用函数封装实例
May 02 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
May 25 Python
Python常用库Numpy进行矩阵运算详解
Jul 21 Python
Python unittest装饰器实现原理及代码
Sep 08 Python
python库sklearn常用操作
Aug 23 Python
Python学习之异常中的finally使用详解
Mar 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
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
中篇:安装及配置PHP
2006/12/13 PHP
PHP 中英文混合排版中处理字符串常用的函数
2007/04/12 PHP
第三章 php操作符与控制结构代码
2011/12/30 PHP
php让json_encode不自动转义斜杠“/”的方法
2020/04/27 PHP
Javascript写了一个清除“logo1_.exe”的杀毒工具(可扫描目录)
2007/02/09 Javascript
插件:检测javascript的内存泄漏
2007/03/04 Javascript
js中方法重载如何实现?以及函数的参数问题
2013/08/01 Javascript
HTML5使用DeviceOrientation实现摇一摇功能
2015/06/05 Javascript
javascript动画之模拟拖拽效果篇
2016/09/26 Javascript
JS中如何实现复选框全选功能
2016/12/19 Javascript
详解在 Angular 项目中添加 clean-blog 模板
2017/07/04 Javascript
使用travis-ci如何持续部署node.js应用详解
2017/07/30 Javascript
JS拖拽排序插件Sortable.js用法实例分析
2019/02/20 Javascript
灵活使用console让js调试更简单的方法步骤
2019/04/23 Javascript
图解javascript作用域链
2019/05/27 Javascript
vue-calendar-component 封装多日期选择组件的实例代码
2020/12/04 Vue.js
[02:42]岂曰无衣,与子同袍!DOTA2致敬每一位守护人
2020/02/17 DOTA
[01:16:50]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第一场 3月7日
2021/03/11 DOTA
python递归计算N!的方法
2015/05/05 Python
一道python走迷宫算法题
2018/01/22 Python
python验证码识别教程之利用滴水算法分割图片
2018/06/05 Python
解决PyCharm import torch包失败的问题
2018/10/13 Python
python解析yaml文件过程详解
2019/08/30 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
2019/10/17 Python
Python统计时间内的并发数代码实例
2019/12/28 Python
基于python纯函数实现井字棋游戏
2020/05/27 Python
详解python 内存优化
2020/08/17 Python
网站设计师的岗位职责
2013/11/21 职场文书
办公室员工岗位工作职责
2014/03/10 职场文书
中学生运动会新闻稿
2014/09/24 职场文书
2015年护士工作总结范文
2015/03/31 职场文书
2016年乡镇七一建党节活动总结
2016/04/05 职场文书
2019如何书写演讲稿?
2019/07/01 职场文书
python 使用Tensorflow训练BP神经网络实现鸢尾花分类
2021/05/12 Python
Python图片验证码降噪和8邻域降噪
2021/08/30 Python