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 文件操作的详解及实例
Sep 18 Python
深入理解Python中的super()方法
Nov 20 Python
Django框架用户注销功能实现方法分析
May 28 Python
Python 用matplotlib画以时间日期为x轴的图像
Aug 06 Python
python 利用turtle模块画出没有角的方格
Nov 23 Python
Python求两个字符串最长公共子序列代码实例
Mar 05 Python
深入浅析Python 命令行模块 Click
Mar 11 Python
python 实现PIL模块在图片画线写字
May 16 Python
Keras 切换后端方式(Theano和TensorFlow)
Jun 19 Python
python如何快速拼接字符串
Oct 28 Python
python学习之使用Matplotlib画实时的动态折线图的示例代码
Feb 25 Python
Python pandas之求和运算和非空值个数统计
Aug 07 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提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
2014/08/28 PHP
php面向对象中static静态属性与方法的内存位置分析
2015/02/08 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
2017/04/15 PHP
php 策略模式原理与应用深入理解
2019/09/25 PHP
音乐播放用的的几个函数
2006/09/07 Javascript
基于JavaScript 类的使用详解
2013/05/07 Javascript
js 控制页面跳转的5种方法
2013/09/09 Javascript
node.js中的fs.utimesSync方法使用说明
2014/12/15 Javascript
DOM 高级编程
2015/05/06 Javascript
JS实现仿雅虎首页快捷登录入口及导航模块效果
2015/09/19 Javascript
JQuery+Ajax实现数据查询、排序和分页功能
2015/09/27 Javascript
jquery插件jquery.confirm弹出确认消息
2015/12/22 Javascript
jQuery 中ajax异步调用的四种方式
2016/06/28 Javascript
用js读写cookie的简单方法(推荐)
2016/08/08 Javascript
微信小程序 首页制作简单实例
2017/04/07 Javascript
css和js实现弹出登录居中界面完整代码
2017/11/26 Javascript
使用async、enterproxy控制并发数量的方法详解
2018/01/02 Javascript
angular6的响应式表单的实现
2018/10/10 Javascript
微信小程序左滑删除功能开发案例详解
2018/11/12 Javascript
vue项目在webpack2实现移动端字体自适配功能
2020/06/02 Javascript
[00:59]DOTA2荣耀之路1:Doom is back!weapon X!
2018/05/22 DOTA
zbar解码二维码和条形码示例
2014/02/07 Python
跟老齐学Python之赋值,简单也不简单
2014/09/24 Python
浅谈Python程序与C++程序的联合使用
2015/04/07 Python
Python算法应用实战之栈详解
2017/02/04 Python
Python实现复杂对象转JSON的方法示例
2017/06/22 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
2019/07/06 Python
Django实现发送邮件功能
2019/07/18 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
2020/03/11 Python
Canvas多边形绘制的实现方法
2019/08/05 HTML / CSS
菲律宾最大的网上花店和礼品店:PhilFlower.com
2018/02/09 全球购物
香港连卡佛百货官网:Lane Crawford
2019/09/04 全球购物
香港艺人陈冠希创办的潮流品牌:JUICESTORE
2021/03/04 全球购物
同步和异步有何异同,在什么情况下分别使用他们
2013/04/09 面试题
导购员的岗位职责
2014/02/08 职场文书
解决pytorch读取自制数据集出现过的问题
2021/05/31 Python