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实现web端用户登录和注册功能的教程
Apr 30 Python
Python爬虫包BeautifulSoup简介与安装(一)
Jun 17 Python
Python实现的网页截图功能【PyQt4与selenium组件】
Jul 12 Python
Python实现繁体中文与简体中文相互转换的方法示例
Dec 18 Python
Python实现的爬取小说爬虫功能示例
Mar 30 Python
python基于property()函数定义属性
Jan 22 Python
python字符串下标与切片及使用方法
Feb 13 Python
Python sql注入 过滤字符串的非法字符实例
Apr 03 Python
python如何写出表白程序
Jun 01 Python
Keras之自定义损失(loss)函数用法说明
Jun 10 Python
python 如何实现遗传算法
Sep 22 Python
python 模拟登陆163邮箱
Dec 15 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
星际争霸中的热键
2020/03/04 星际争霸
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
php源码 fsockopen获取网页内容实例详解
2016/09/24 PHP
jQuery动态显示和隐藏datagrid中的某一列的方法
2013/12/11 Javascript
jQuery 设置 CSS 属性示例介绍
2014/01/16 Javascript
JS获得图片alt信息的方法
2015/04/01 Javascript
CSS+JS实现点击文字弹出定时自动关闭DIV层菜单的方法
2015/05/12 Javascript
javascript实现模拟时钟的方法
2015/05/13 Javascript
JS实现点击按钮控制Div变宽、增高及调整背景色的方法
2015/08/05 Javascript
jquery动感漂浮导航菜单代码分享
2020/04/15 Javascript
require简单实现单页应用程序(SPA)
2016/07/12 Javascript
Javascript6中字符串的四个新用法分享
2016/09/11 Javascript
EsLint入门学习教程
2017/02/17 Javascript
js实现功能比较全面的全选和多选
2017/03/02 Javascript
JS表格组件神器bootstrap table使用指南详解
2017/04/12 Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
2017/07/22 jQuery
详解mpvue小程序中怎么引入iconfont字体图标
2018/10/01 Javascript
layui-select动态选中值的例子
2019/09/23 Javascript
vue之组件内监控$store中定义变量的变化详解
2019/11/08 Javascript
JavaScript数组去重实现方法小结
2020/01/17 Javascript
Python绑定方法与非绑定方法详解
2017/08/18 Python
win10系统下Anaconda3安装配置方法图文教程
2018/09/19 Python
对python列表里的字典元素去重方法详解
2019/01/21 Python
python对象转字典的两种实现方式示例
2019/11/07 Python
如何验证python安装成功
2020/07/06 Python
匡威荷兰官方网站:Converse荷兰
2018/10/24 全球购物
优秀村官事迹材料
2014/01/10 职场文书
刊首寄语大全
2014/04/11 职场文书
跳槽求职信范文
2014/05/26 职场文书
群众路线领导干部个人对照检查材料(集锦)
2014/09/23 职场文书
银行员工考核评语
2014/12/31 职场文书
听课评课活动心得体会
2016/01/15 职场文书
详解Redis实现限流的三种方式
2021/04/27 Redis
MySQL如何快速创建800w条测试数据表
2022/03/17 MySQL
JavaScript中的LHS和RHS分析详情
2022/04/06 Javascript
详解Go语言中Get/Post请求测试
2022/06/01 Golang