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 返回汉字的汉语拼音
Feb 27 Python
Python第三方库的安装方法总结
Jun 06 Python
Python中单、双下划线的区别总结
Dec 01 Python
Python xlwt设置excel单元格字体及格式
Apr 18 Python
django 发送手机验证码的示例代码
Apr 25 Python
Python实现繁?转为简体的方法示例
Dec 18 Python
Python实现图片转字符画的代码实例
Feb 22 Python
Python利用sqlacodegen自动生成ORM实体类示例
Jun 04 Python
TensorFlow 多元函数的极值实例
Feb 10 Python
python 实现端口扫描工具
Dec 18 Python
python Autopep8实现按PEP8风格自动排版Python代码
Mar 02 Python
python微信智能AI机器人实现多种支付方式
Apr 12 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获取汉字的拼音(全部与首字母)
2013/06/27 PHP
PHP开发APP端微信支付功能
2017/02/17 PHP
基于laravel belongsTo使用详解
2019/10/18 PHP
jQuery对象和DOM对象的相互转化实现代码
2010/03/02 Javascript
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
2010/06/28 Javascript
兼容所有浏览器的js复制插件Zero使用介绍
2014/03/19 Javascript
借助javascript代码判断网页是静态还是伪静态
2014/05/05 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
2015/03/13 Javascript
JavaScript定时器和优化的取消定时器方法
2015/07/03 Javascript
JS模仿编辑器实时改变文本框宽度和高度大小的方法
2015/08/17 Javascript
Bootstrap对话框使用实例讲解
2016/09/24 Javascript
利用jQuery来动态为属性添加或者删除属性的简单方法
2016/12/02 Javascript
Bootstrap 填充Json数据的实例代码
2017/01/11 Javascript
javascript表单正则应用
2017/02/04 Javascript
Ajax基础知识详解
2017/02/17 Javascript
详谈jQuery中使用attr(), prop(), val()获取value的异同
2017/04/25 jQuery
使用express搭建一个简单的查询服务器的方法
2018/02/09 Javascript
vue实现个人信息查看和密码修改功能
2018/05/06 Javascript
微信小程序使用swiper组件实现类3D轮播图
2018/08/29 Javascript
JavaScript模板引擎实现原理实例详解
2018/12/14 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
2020/09/04 Javascript
python中的yield使用方法
2014/02/11 Python
一文带你了解Python中的字符串是什么
2018/11/20 Python
Python K最近邻从原理到实现的方法
2019/08/15 Python
python flask中动态URL规则详解
2019/11/22 Python
python:解析requests返回的response(json格式)说明
2020/04/30 Python
PyQt5-QDateEdit的简单使用操作
2020/07/12 Python
python pygame 愤怒的小鸟游戏示例代码
2021/02/25 Python
CAT鞋英国官网:坚固耐用的靴子和鞋
2016/10/21 全球购物
Expedia西班牙:预订酒店、机票、旅行和廉价度假套餐
2019/04/10 全球购物
linux面试题参考答案(6)
2014/08/29 面试题
综合实践活动报告
2015/02/05 职场文书
护士先进个人总结
2015/02/13 职场文书
家长高考寄语
2015/02/27 职场文书
项目经理助理岗位职责
2015/04/13 职场文书
springboot新建项目pom.xml文件第一行报错的解决
2022/01/18 Java/Android