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 制作图片转pdf工具
Jan 30 Python
解决Python 爬虫URL中存在中文或特殊符号无法请求的问题
May 11 Python
Tornado Web Server框架编写简易Python服务器
Jul 28 Python
Python爬取qq空间说说的实例代码
Aug 17 Python
python write无法写入文件的解决方法
Jan 23 Python
Python3.5集合及其常见运算实例详解
May 01 Python
Python TestCase中的断言方法介绍
May 02 Python
Python 仅获取响应头, 不获取实体的实例
Aug 21 Python
Django 对IP访问频率进行限制的例子
Aug 30 Python
详解python 降级到3.6终极解决方案
Feb 06 Python
python如何实现单链表的反转
Feb 10 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
php环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
2007/03/16 PHP
Apache+php+mysql在windows下的安装与配置图解(最新版)
2008/11/30 PHP
深入php-fpm的两种进程管理模式详解
2013/06/03 PHP
destoon调用discuz论坛中带图片帖子的实现方法
2014/08/21 PHP
php检测mysql表是否存在的方法小结
2017/07/20 PHP
PHP常用日期加减计算方法实例小结
2018/07/31 PHP
PHP+MySQL实现在线测试答题实例
2020/01/02 PHP
javascript 操作Word和Excel的实现代码
2009/10/26 Javascript
jQuery 开天辟地入门篇一
2009/12/09 Javascript
js过滤数组重复元素的方法
2010/09/05 Javascript
基于node.js的快速开发透明代理
2010/12/25 Javascript
基于jquery的合并table相同单元格的插件(精简版)
2011/04/05 Javascript
ASP.NET jQuery 实例9  通过控件hyperlink实现返回顶部效果
2012/02/03 Javascript
jquery1.9 下检测浏览器类型和版本的方法
2013/12/26 Javascript
jQuery CSS()方法改变现有的CSS样式
2014/08/20 Javascript
JQuery实现鼠标移动图片显示描述层的方法
2015/06/25 Javascript
jQuery中text() val()和html()的区别实例详解
2016/06/28 Javascript
Google Maps基础及实例解析
2016/08/06 Javascript
Bootstrap popover用法详解
2016/12/22 Javascript
JQuery实现文字无缝滚动效果示例代码(Marquee插件)
2017/03/07 Javascript
javaScript封装的各种写法
2017/08/14 Javascript
JavaScript函数绑定用法实例分析
2017/11/14 Javascript
JavaScript fetch接口案例解析
2018/08/30 Javascript
element-ui上传一张图片后隐藏上传按钮功能
2019/05/22 Javascript
详解JavaScript 浮点数运算的精度问题
2019/07/23 Javascript
[01:06:54]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第二场 2月28日
2021/03/11 DOTA
解决python3中cv2读取中文路径的问题
2018/12/05 Python
Pandas时间序列:重采样及频率转换方式
2019/12/26 Python
Python的collections模块真的很好用
2021/03/01 Python
梅西酒窖:Macy’s Wine Cellar
2018/01/07 全球购物
中软国际Java程序员笔试题
2014/07/19 面试题
淘宝好评语大全
2014/05/05 职场文书
医学求职信
2014/05/28 职场文书
关于读书的演讲稿600字
2014/08/27 职场文书
合作与交流自我评价
2015/03/09 职场文书
公司地址变更通知
2015/04/25 职场文书