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 相关文章推荐
Python2.5/2.6实用教程 入门基础篇
Nov 29 Python
python返回昨天日期的方法
May 13 Python
django限制匿名用户访问及重定向的方法实例
Feb 07 Python
浅谈python可视化包Bokeh
Feb 07 Python
python爬虫之urllib3的使用示例
Jul 09 Python
python高阶爬虫实战分析
Jul 29 Python
Python3.5面向对象程序设计之类的继承和多态详解
Apr 24 Python
Python with用法:自动关闭文件进程
Jul 10 Python
Python 通过截图匹配原图中的位置(opencv)实例
Aug 27 Python
Python自动重新加载模块详解(autoreload module)
Apr 01 Python
DRF框架API版本管理实现方法解析
Aug 21 Python
Pytho爬虫中Requests设置请求头Headers的方法
Sep 22 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的FTP学习(一)[转自奥索]
2006/10/09 PHP
dede3.1分页文字采集过滤规则详说(图文教程)续二
2007/04/03 PHP
PHP获取当前日期和时间及格式化方法参数
2015/05/11 PHP
IOS 开发之NSDictionary转换成JSON字符串
2017/08/14 PHP
用 javascript 实现的点击复制代码
2007/03/24 Javascript
My Desktop :) 桌面式代码
2008/12/29 Javascript
JS刷新框架外页面七种实现代码
2013/02/18 Javascript
jquery 文本上下无缝滚动,鼠标放上去就停止 小例子
2013/06/05 Javascript
php 中序列化和json使用介绍
2013/07/08 Javascript
jQuery页面刷新(局部、全部)问题分析
2016/01/09 Javascript
Javascript闭包与函数柯里化浅析
2016/06/22 Javascript
jQuery实现的背景颜色渐变动画效果示例
2017/03/24 jQuery
微信小程序在地图选择地址并返回经纬度简单示例
2018/12/03 Javascript
vue 实现路由跳转时更改页面title
2019/11/05 Javascript
js实现tab栏切换效果
2020/08/02 Javascript
[00:36]DOTA2上海特级锦标赛 Archon战队宣传片
2016/03/04 DOTA
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
Python中分数的相关使用教程
2015/03/30 Python
Python判断Abundant Number的方法
2015/06/15 Python
Python错误提示:[Errno 24] Too many open files的分析与解决
2017/02/16 Python
django 发送邮件和缓存的实现代码
2018/07/18 Python
详解python实现识别手写MNIST数字集的程序
2018/08/03 Python
解决Python数据可视化中文部分显示方块问题
2020/05/16 Python
Python执行时间的几种计算方法
2020/07/31 Python
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
秘书行业自我鉴定范文
2013/12/30 职场文书
致跳远、跳高运动员广播稿
2014/01/09 职场文书
会计大学生职业生涯规划书范文
2014/01/13 职场文书
计算机专业毕业生自我鉴定
2014/01/16 职场文书
节水倡议书范文
2014/04/15 职场文书
给校长的建议书200字
2014/05/16 职场文书
医德医风自我评价
2014/09/19 职场文书
关于分班的感言
2015/08/04 职场文书
PL350与SW11的比较
2021/04/22 无线电
Python opencv缺陷检测的实现及问题解决
2021/04/24 Python
pytorch 中nn.Dropout的使用说明
2021/05/20 Python