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 相关文章推荐
Linux系统上Nginx+Python的web.py与Django框架环境
Dec 25 Python
Python 基于Twisted框架的文件夹网络传输源码
Aug 28 Python
使用python爬虫实现网络股票信息爬取的demo
Jan 05 Python
Python获取二维矩阵每列最大值的方法
Apr 03 Python
python 字典中取值的两种方法小结
Aug 02 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
Jan 24 Python
python连接PostgreSQL过程解析
Feb 09 Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
Feb 14 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
May 13 Python
Python嵌入C/C++进行开发详解
Jun 09 Python
使用python matploblib库绘制准确率,损失率折线图
Jun 16 Python
浅析Python实现DFA算法
Jun 26 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
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
2006/10/09 PHP
php 空格,换行,跳格使用说明
2009/12/18 PHP
PHP安全性漫谈
2012/06/28 PHP
Yii调试SQL的常用方法
2014/07/09 PHP
PHP命令空间namespace及use的用法小结
2017/11/27 PHP
JS在IE和FF下attachEvent,addEventListener学习笔记
2009/11/26 Javascript
jquery next nextAll nextUntil siblings的区别介绍
2013/10/05 Javascript
jquery和ajax的关系详细介绍
2013/11/29 Javascript
可编辑下拉框的2种实现方式
2014/06/13 Javascript
谈谈JavaScript类型系统之Math
2016/01/06 Javascript
javascript和jquery实现用户登录验证
2016/05/04 Javascript
jQuery简单实现上下,左右滑动的方法
2016/06/01 Javascript
javascript设计模式Constructor(构造器)模式
2016/08/19 Javascript
js实现3D图片环展示效果
2017/03/09 Javascript
AngularJS 的$timeout服务示例代码
2017/09/21 Javascript
详解vue 组件之间使用eventbus传值
2017/10/25 Javascript
vue实现element-ui对话框可拖拽功能
2018/08/17 Javascript
解决vue-cli单页面手机应用input点击手机端虚拟键盘弹出盖住input问题
2018/08/25 Javascript
vue中使用input[type=&quot;file&quot;]实现文件上传功能
2018/09/10 Javascript
Python下的subprocess模块的入门指引
2015/04/16 Python
python音频处理用到的操作的示例代码
2017/10/27 Python
python交互式图形编程实例(二)
2017/11/17 Python
python的Crypto模块实现AES加密实例代码
2018/01/22 Python
pandas将DataFrame的列变成行索引的方法
2018/04/10 Python
Python Series从0开始索引的方法
2018/11/06 Python
Python爬取腾讯视频评论的思路详解
2019/12/19 Python
Python3 mmap内存映射文件示例解析
2020/03/23 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
美国在线家装零售商:Build.com
2016/09/02 全球购物
台湾百利市购物中心:e-Payless
2017/08/16 全球购物
理肤泉俄罗斯官网:La Roche-Posay俄罗斯
2018/07/24 全球购物
口头翻译求职人自荐信
2013/12/07 职场文书
教育科研先进个人材料
2014/01/26 职场文书
试用期转正后的自我评价
2014/09/21 职场文书
群众路线教育实践活动学习心得体会
2014/10/30 职场文书
2014年超市工作总结
2014/11/19 职场文书