Python实现动态添加属性和方法操作示例


Posted in Python onJuly 25, 2018

本文实例讲述了Python实现动态添加属性和方法操作。分享给大家供大家参考,具体如下:

# -*- coding:utf-8 -*-
#!python3
class Person():
  def __init__(self, name, age):
    self.name = name
    self.age = age
p1 = Person('ff', '28')
print(p1.name, p1.age)
# 给实例对象动态添加sex属性
p1.sex = 'female'
print(p1.sex)
# 给类动态添加属性
Person.height = None
print(Person.height)
p1.height = '155'
print(p1.height)
# 动态定义一个方法
def run(self, speed):
  print('run with %d speed' % speed)
# 给实例绑定方法
import types
p1.run = types.MethodType(run, p1)
p1.run(30)
# Person.run = run # 运行错误 
# Person.run(4)
@classmethod
def run2(a, speed):
  print('run with %d m/s' % speed)
# 给类动态绑定方法
Person.run2 = run2    # 给类绑定的方法, 需加修饰器 @classmethod, 标定其为类方法,可被类添加
Person.run2(4)
p1.run2(5)       # 类的实例对象也可调用类动态添加的方法
@staticmethod
def eat():
  print('eat---')
Person.eat = eat    # 类可添加静态方法, 定义静态方法时,需加修饰器@staticmethod
Person.eat()
p1.eat()        # 实例对象同样可调用类动态添加的静态方法
del p1.name       # del 删除属性
delattr(p1, 'sex')
print(p1.name, p1.sex)

运行结果:

ff 28
female
None
155
run with 30 speed
run with 4 m/s
run with 5 m/s
eat---
eat---
Traceback (most recent call last):
  File "/home/python/Desktop/test/12_动态语言.py", line 41, in <module>
    print(p1.name, p1.sex)
AttributeError: 'Person' object has no attribute 'name'

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python 中文字符串的处理实现代码
Oct 25 Python
Python中optparse模块使用浅析
Jan 01 Python
Python 正则表达式的高级用法
Dec 04 Python
python中的迭代和可迭代对象代码示例
Dec 27 Python
python 寻找优化使成本函数最小的最优解的方法
Dec 28 Python
Python OpenCV 直方图的计算与显示的方法示例
Feb 08 Python
Python实现替换文件中指定内容的方法
Mar 19 Python
opencv实现图片模糊和锐化操作
Nov 19 Python
Pycharm以root权限运行脚本的方法
Jan 19 Python
python常用函数与用法示例
Jul 02 Python
浅谈优化Django ORM中的性能问题
Jul 09 Python
Python爬虫实现selenium处理iframe作用域问题
Jan 27 Python
利用pandas读取中文数据集的方法
Jul 25 #Python
利用pandas进行大文件计数处理的方法
Jul 25 #Python
使用python验证代理ip是否可用的实现方法
Jul 25 #Python
Python+Pandas 获取数据库并加入DataFrame的实例
Jul 25 #Python
python requests 测试代理ip是否生效
Jul 25 #Python
Python使用pymysql从MySQL数据库中读出数据的方法
Jul 25 #Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
Jul 25 #Python
You might like
CMS中PHP判断系统是否已经安装的方法示例
2014/07/26 PHP
php获取一定范围内取N个不重复的随机数
2016/05/28 PHP
Yii框架页面渲染操作实例详解
2019/07/19 PHP
PHP之多条件混合筛选功能的实现方法
2019/10/09 PHP
jQuery Ajax文件上传(php)
2009/06/16 Javascript
javascript中onmouse事件在div中失效问题的解决方法
2012/01/09 Javascript
六款帮助你实现惊艳视差滚动效果的jQuery插件
2012/09/14 Javascript
Js,alert出现乱码问题的解决方法
2013/06/19 Javascript
JavaScript创建对象的写法
2013/08/29 Javascript
通过js获取div的background-image属性
2013/10/15 Javascript
js判断数据类型如判断是否为数组是否为字符串等等
2014/01/15 Javascript
使用iframe window的scroll方法控制iframe页面滚动
2014/03/05 Javascript
js动态添加onclick事件可传参数与不传参数
2014/07/29 Javascript
取得元素的左和上偏移量的方法
2014/09/17 Javascript
js实现仿爱微网两级导航菜单效果代码
2015/08/31 Javascript
js+canvas绘制五角星的方法
2016/01/28 Javascript
JavaScript事件用法浅析
2016/10/31 Javascript
js前端解决跨域问题的8种方案(最新最全)
2016/11/18 Javascript
bootstrap制作jsp页面(根据值让table显示选中)
2017/01/05 Javascript
解决VUEX兼容IE上的报错问题
2018/03/01 Javascript
vue中v-model对select的绑定操作
2020/08/31 Javascript
Python yield 小结和实例
2014/04/25 Python
python搭建服务器实现两个Android客户端间收发消息
2018/04/12 Python
django+echart绘制曲线图的方法示例
2018/11/26 Python
如何利用python给图片添加半透明水印
2019/09/06 Python
Python使用graphviz画流程图过程解析
2020/03/31 Python
python基于openpyxl生成excel文件
2020/12/23 Python
Python第三方库安装缓慢的解决方法
2021/02/06 Python
三维科技面试题
2013/07/27 面试题
顺丰快递Java软件工程师面试题
2015/07/31 面试题
贷款委托书怎么写
2014/08/02 职场文书
小学庆六一活动总结
2014/08/28 职场文书
学生实习证明范文
2014/09/28 职场文书
教代会开幕词
2015/01/28 职场文书
民事辩护词范文
2015/05/21 职场文书
2016教师廉洁从教心得体会
2016/01/13 职场文书