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的Tornado框架的HTTP客户端的教程
Apr 24 Python
在Python中操作列表之List.pop()方法的使用
May 21 Python
Python连接mysql数据库的正确姿势
Feb 03 Python
使用简单工厂模式来进行Python的设计模式编程
Mar 01 Python
详解python脚本自动生成需要文件实例代码
Feb 04 Python
python3+selenium实现126邮箱登陆并发送邮件功能
Jan 23 Python
python浪漫表白源码
Apr 05 Python
python 在某.py文件中调用其他.py内的函数的方法
Jun 25 Python
python在不同条件下的输入与输出
Feb 13 Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
Mar 30 Python
Python爬虫基础之爬虫的分类知识总结
May 13 Python
Python实战实现爬取天气数据并完成可视化分析详解
Jun 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
WordPress中邮件的一些修改和自定义技巧
2015/12/15 PHP
php微信公众平台交互与接口详解
2016/11/28 PHP
php 提交表单 关闭layer弹窗iframe的实例讲解
2018/08/20 PHP
input的focus方法使用
2010/03/13 Javascript
在Javascript里访问SharePoint列表数据的实现方法
2011/05/22 Javascript
Javascript Throttle &amp; Debounce应用介绍
2013/03/19 Javascript
js中方法重载如何实现?以及函数的参数问题
2013/08/01 Javascript
javascript date格式化示例
2013/09/25 Javascript
js换图片效果可进行定时操作
2014/06/09 Javascript
jQuery插件开发的五种形态小结
2015/03/04 Javascript
JavaScript使用setTimeout实现延迟弹出警告框的方法
2015/04/07 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
2015/06/18 Javascript
浅谈jquery设置和获得checkbox选中的问题
2016/08/19 Javascript
使用mock.js随机数据和使用express输出json接口的实现方法
2018/01/07 Javascript
vue中typescript装饰器的使用方法超实用教程
2019/06/17 Javascript
javascript将扁平的数据转为树形结构的高效率算法
2020/02/27 Javascript
[01:05:56]Liquid vs VP Supermajor决赛 BO 第二场 6.10
2018/07/04 DOTA
[05:00]TI9战队采访 - Royal Never Give Up
2019/08/20 DOTA
详解python中xlrd包的安装与处理Excel表格
2016/12/16 Python
python更改已存在excel文件的方法
2018/05/03 Python
Python 根据日志级别打印不同颜色的日志的方法示例
2019/08/08 Python
vscode写python时的代码错误提醒和自动格式化的方法
2020/05/07 Python
Python 使用双重循环打印图形菱形操作
2020/08/09 Python
Python 如何查找特定类型文件
2020/08/17 Python
CSS3的column-fill属性对齐列内容高度的用法详解
2016/07/01 HTML / CSS
英国排名第一的在线宠物用品商店:Monster Pet Supplies
2018/05/20 全球购物
一句话工作感言
2014/03/01 职场文书
酒店总经理岗位职责
2014/03/17 职场文书
学习经验交流会主持词
2014/04/01 职场文书
献爱心倡议书
2014/04/14 职场文书
幼儿园清明节活动总结
2014/07/04 职场文书
单位委托书怎么写
2014/08/02 职场文书
皇城相府导游词
2015/02/06 职场文书
计生个人工作总结
2015/02/28 职场文书
保送生自荐信范文
2015/03/26 职场文书
小学英语课教学反思
2016/02/15 职场文书