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的垃圾回收机制深入分析
Jul 16 Python
Python实现获取某天是某个月中的第几周
Feb 11 Python
Python中使用items()方法返回字典元素对的教程
May 21 Python
Python中内置数据类型list,tuple,dict,set的区别和用法
Dec 14 Python
Python实现判断一个整数是否为回文数算法示例
Mar 02 Python
Python2和3字符编码的区别知识点整理
Aug 08 Python
python返回数组的索引实例
Nov 28 Python
python解释器pycharm安装及环境变量配置教程图文详解
Feb 26 Python
如何使用 Python 读取文件和照片的创建日期
Sep 05 Python
基于Python采集爬取微信公众号历史数据
Nov 27 Python
python BeautifulSoup库的安装与使用
Dec 17 Python
删除pycharm鼠标右键快捷键打开项目的操作
Jan 16 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
用文本文件制作留言板提示(上)
2006/10/09 PHP
php 过滤危险html代码
2009/06/29 PHP
php 文件夹删除、php清除缓存程序
2009/08/25 PHP
Docker 如何布置PHP开发环境
2016/06/21 PHP
thinkphp配置文件路径的实现方法
2016/08/30 PHP
Thinkphp5.0自动生成模块及目录的方法详解
2017/04/17 PHP
PHP实现关键字搜索后描红功能示例
2019/07/03 PHP
JavaScript 创建对象和构造类实现代码
2009/07/30 Javascript
jQuery实现原理的模拟代码 -6 代码下载
2010/08/16 Javascript
js模仿windows桌面图标排列算法具体实现(附图)
2013/06/16 Javascript
JQuery实现表格中相同单元格合并示例代码
2013/06/26 Javascript
JS+DIV实现鼠标划过切换层效果的方法
2015/05/25 Javascript
JavaScript通过代码调用Flash显示的方法
2016/02/02 Javascript
JavaScript导航脚本判断当前导航
2016/07/12 Javascript
对Js OOP编程 创建对象的一些全面理解
2016/07/26 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
2016/12/03 Javascript
Vue-Router实现页面正在加载特效方法示例
2017/02/12 Javascript
Angular.js指令学习中一些重要属性的用法教程
2017/05/24 Javascript
详解element-ui日期时间选择器的日期格式化问题
2019/04/08 Javascript
通过实例了解JS 连续赋值
2019/09/24 Javascript
Python MySQL数据库连接池组件pymysqlpool详解
2017/07/07 Python
Python实现的中国剩余定理算法示例
2017/08/05 Python
Windows下Anaconda的安装和简单使用方法
2018/01/04 Python
python numpy 显示图像阵列的实例
2018/07/02 Python
解决pycharm安装后代码区不能编辑的问题
2018/10/28 Python
python 使用socket传输图片视频等文件的实现方式
2019/08/07 Python
Django执行源生mysql语句实现过程解析
2020/11/12 Python
HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题
2021/01/19 HTML / CSS
菲律宾优惠券网站:MetroDeal
2019/04/12 全球购物
内刊编辑求职自荐书范文
2014/02/19 职场文书
新闻学专业大学生职业生涯规划范文
2014/03/02 职场文书
2014年企业工会工作总结
2014/11/12 职场文书
2014年民警工作总结
2014/11/25 职场文书
保送生自荐信
2015/03/06 职场文书
安全生产学习心得体会
2016/01/18 职场文书
delete in子查询不走索引问题分析
2022/07/07 MySQL