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之通过Python连接数据库
Oct 28 Python
python计算牛顿迭代多项式实例分析
May 07 Python
Python 专题六 局部变量、全局变量global、导入模块变量
Mar 20 Python
python抓取文件夹的所有文件
Feb 27 Python
Python双向循环链表实现方法分析
Jul 30 Python
python 美化输出信息的实例
Oct 15 Python
给你一面国旗 教你用python画中国国旗
Sep 24 Python
python2.7使用scapy发送syn实例
May 05 Python
python输出数学符号实例
May 11 Python
Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码
May 28 Python
selenium切换标签页解决get超时问题的完整代码
Aug 30 Python
通过实例解析python and和or使用方法
Nov 14 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
js Event对象的5种坐标
2011/09/12 Javascript
让jQuery Mobile不显示讨厌loading界面的方法
2014/02/19 Javascript
【经验总结】编写JavaScript代码时应遵循的14条规律
2016/06/20 Javascript
JavaScript实现url参数转成json形式
2016/09/25 Javascript
微信小程序 LOL 英雄介绍开发实例
2016/09/30 Javascript
详解基于vue-cli优化的webpack配置
2017/11/06 Javascript
vue路由嵌套的SPA实现步骤
2017/11/06 Javascript
开发Vue树形组件的示例代码
2017/12/21 Javascript
Vue父组件调用子组件事件方法
2018/02/23 Javascript
微信小程序实现手指触摸画板
2018/07/09 Javascript
layui 实现二级弹窗弹出之后 关闭一级弹窗的方法
2019/09/18 Javascript
JavaScript onclick事件使用方法详解
2020/05/15 Javascript
Vue.js中使用Vuex实现组件数据共享案例
2020/07/31 Javascript
python解决字典中的值是列表问题的方法
2013/03/04 Python
python类继承用法实例分析
2014/10/10 Python
Python中的ctime()方法使用教程
2015/05/22 Python
python 删除字符串中连续多个空格并保留一个的方法
2018/12/22 Python
详解python项目实战:模拟登陆CSDN
2019/04/04 Python
python opencv 图像拼接的实现方法
2019/06/27 Python
详解Python图像处理库Pillow常用使用方法
2019/09/02 Python
HTML5 video 事件应用示例
2014/09/11 HTML / CSS
海淘母婴商城:国际妈咪
2016/07/23 全球购物
英国DIY汽车维修配件网站:DIY Car Service Parts
2019/08/30 全球购物
美国相机和电子产品零售商:Beach Camera
2020/11/26 全球购物
师范生自我鉴定范文
2013/10/05 职场文书
电气工程和自动化自荐信范文
2013/12/25 职场文书
学习党课思想汇报
2013/12/29 职场文书
护士感人事迹
2014/05/01 职场文书
求职信怎么写范文
2014/05/26 职场文书
学位证书委托书
2014/09/30 职场文书
美容院合作经营协议书
2014/10/10 职场文书
普通党员群众路线教育实践活动心得体会
2014/11/04 职场文书
试用期解除劳动合同通知书
2015/04/16 职场文书
物业保安辞职信
2015/05/12 职场文书
爱国影片观后感
2015/06/18 职场文书
Nginx反向代理及负载均衡如何实现(基于linux)
2021/03/31 Servers