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加pyGame实现的简单拼图游戏实例
May 15 Python
Python的标准模块包json详解
Mar 13 Python
numpy使用技巧之数组过滤实例代码
Feb 03 Python
在pandas中一次性删除dataframe的多个列方法
Apr 10 Python
Python连接Mssql基础教程之Python库pymssql
Sep 16 Python
python 将日期戳(五位数时间)转换为标准时间
Jul 11 Python
python3.x提取中文的正则表达式示例代码
Jul 23 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
Oct 12 Python
jupyter notebook 参数传递给shell命令行实例
Apr 10 Python
pytorch 如何使用float64训练
May 24 Python
Python基础之变量的相关知识总结
Jun 23 Python
pandas中pd.groupby()的用法详解
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
PHP的password_hash()使用实例
2014/03/17 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
2014/06/19 PHP
php 使用array函数实现分页
2015/02/13 PHP
php异常处理方法实例汇总
2015/06/24 PHP
CI框架数据库查询之join用法分析
2016/05/18 PHP
Laravel框架实现发送短信验证功能代码
2016/06/06 PHP
php进行ip地址掩码运算处理的方法
2016/07/11 PHP
javascript (用setTimeout而非setInterval)
2011/12/28 Javascript
Raphael一个用于在网页中绘制矢量图形的Javascript库
2013/01/08 Javascript
jquery选择器排除某个DOM元素的方法(实例演示)
2014/04/25 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
2014/09/09 Javascript
基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
2014/09/26 NodeJs
全面解析Bootstrap图片轮播效果
2015/12/03 Javascript
node.js cookie-parser 中间件介绍
2016/06/06 Javascript
react-native 完整实现登录功能的示例代码
2017/09/11 Javascript
JS获取并处理php数组的方法实例分析
2018/09/04 Javascript
详解Vue中组件传值的多重实现方式
2019/08/16 Javascript
Vue 动态组件components和v-once指令的实现
2019/08/30 Javascript
layui table单元格事件修改值的方法
2019/09/24 Javascript
Bootstrap简单实用的表单验证插件BootstrapValidator用法实例详解
2020/03/29 Javascript
python网络编程实例简析
2014/09/26 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
2018/06/25 Python
python隐藏终端执行cmd命令的方法
2019/06/24 Python
python中metaclass原理与用法详解
2019/06/25 Python
Python中遍历列表的方法总结
2019/06/27 Python
python入门:argparse浅析 nargs='+'作用
2020/07/12 Python
Otticanet美国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
eBay英国购物网站:eBay.co.uk
2019/06/19 全球购物
英国网上超市:Ocado
2020/03/05 全球购物
三月学雷锋月活动总结
2014/04/28 职场文书
计算机售后服务承诺书
2014/05/30 职场文书
销售活动策划方案
2014/08/26 职场文书
关于运动会的广播稿50字
2014/10/17 职场文书
客房服务员岗位职责
2015/02/09 职场文书
2015年双拥工作总结
2015/04/08 职场文书
停发工资证明范本
2015/06/12 职场文书