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 相关文章推荐
10款最好的Web开发的 Python 框架
Mar 18 Python
用Python生成器实现微线程编程的教程
Apr 13 Python
在python的类中动态添加属性与生成对象
Sep 17 Python
简单谈谈Python中的json与pickle
Jul 19 Python
Django REST为文件属性输出完整URL的方法
Dec 18 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
Mar 19 Python
在Pycharm中设置默认自动换行的方法
Jan 16 Python
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
Jun 04 Python
解决django 新增加用户信息出现错误的问题
Jul 28 Python
python实现人像动漫化的示例代码
May 17 Python
python实现模拟器爬取抖音评论数据的示例代码
Jan 06 Python
Python Numpy库的超详细教程
Apr 06 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
dedecms中显示数字验证码的修改方法
2007/03/21 PHP
thinkphp制作404跳转页的简单实现方法
2016/09/22 PHP
PHP 超级全局变量相关总结
2020/06/30 PHP
javascript URL编码和解码使用说明
2010/04/12 Javascript
js模拟hashtable的简单实例
2014/03/06 Javascript
JavaScript和JQuery的鼠标mouse事件冒泡处理
2015/06/19 Javascript
AngularJS基础 ng-dblclick 指令用法
2016/08/01 Javascript
使用JQuery中的trim()方法去掉前后空格
2016/09/16 Javascript
javascript遍历json对象的key和任意js对象属性实例
2017/03/09 Javascript
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
2018/03/28 jQuery
webpack 模块热替换原理
2018/04/09 Javascript
微信小程序自定义音乐进度条的实例代码
2018/08/28 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
Servlet返回的数据js解析2种方法
2019/12/12 Javascript
ES6 Symbol在对象中的作用实例分析
2020/06/06 Javascript
小程序实现简单语音聊天的示例代码
2020/07/24 Javascript
使用Python编写爬虫的基本模块及框架使用指南
2016/01/20 Python
详解Python的Twisted框架中reactor事件管理器的用法
2016/05/25 Python
python分割列表(list)的方法示例
2017/05/07 Python
Python中单、双下划线的区别总结
2017/12/01 Python
python实现简单遗传算法
2018/03/19 Python
iPython pylab模式启动方式
2020/04/24 Python
django 连接数据库出现1045错误的解决方式
2020/05/14 Python
Python 高效编程技巧分享
2020/09/10 Python
使用html5 canvas创建太空游戏的示例
2014/05/08 HTML / CSS
GoPro摄像机美国官网:美国运动相机厂商
2018/07/03 全球购物
毕业生求职的求职信
2013/12/05 职场文书
客服专员岗位职责
2014/02/28 职场文书
艺术学院毕业生自我评价
2014/03/02 职场文书
初三开学计划书
2014/04/27 职场文书
小学教师培训方案
2014/06/09 职场文书
开发房地产协议书
2014/09/14 职场文书
优秀党员先进事迹材料
2014/12/18 职场文书
检讨书格式
2015/01/23 职场文书
运动会800米赞词
2015/07/22 职场文书
Pyhton爬虫知识之正则表达式详解
2022/04/01 Python