python中MethodType方法介绍与使用示例


Posted in Python onAugust 03, 2017

前言

本文主要给大家介绍了关于python中MethodType方法的相关内容,分享出来供大家参考学习,话不多说,来一起看看详细的介绍吧

示例代码

#!/usr/bin/python
# -*-coding:utf-8-*-

from types import MethodType 
"""
文件名 class2.py
MethodType 测试
"""
# 首先看第一种方式
#创建一个方法
def set_age(self, arg):
 self.age = arg 
#创建一个类 
class Student(object):
 pass

#------以上为公共部分


s_one = Student()
#给student 创建一个方法 但这里不是在class中创建而是创建了一个链接把外部的set_age 方法用链接知道Student内
s_one.set_age = MethodType(set_age,s_one,Student)
s_one.set_age(32) #调用实例方法
print s_one.age
#》》》》结果 32
s_two = Student() 
s_two.set_age(100) #这里来验证下是在类内有方法还是类外有方法。
print s_two.age
#》》》》结果Traceback (most recent call last):
#》》》》 File "class2.py", line 22, in <module>
#》》》》 s_two.set_age(100) #这里来验证下是在类内有方法还是类外有方法。
#》》》》 AttributeError: 'Student' object has no attribute 'set_age'

看另一种

#直接用类来创建一个方法 不过此时还是用链接的方式在类外的内存中创建
Student.set_age = MethodType(set_age,Student)
#此时在创建实例的时候外部方法 set_age 也会复制 这些实例和Student类都指向同一个set_age方法
new1 = Student()
new2 = Student()
new1.set_age(99)
new2.set_age(98) #第二个会覆盖第一个 
print (new1.age,new2.age) 
#看结果 2个都是98 
#》》》》(98, 98)

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python的Tornado框架实现图片上传及图片大小修改功能
Jun 30 Python
Python的Flask框架中的Jinja2模板引擎学习教程
Jun 30 Python
如何在Python函数执行前后增加额外的行为
Oct 20 Python
Python基础教程之tcp socket编程详解及简单实例
Feb 23 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
May 03 Python
Python中xrange与yield的用法实例分析
Dec 26 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
Jun 28 Python
使用Django连接Mysql数据库步骤
Jan 15 Python
TensorFlow加载模型时出错的解决方式
Feb 06 Python
用python实现前向分词最大匹配算法的示例代码
Aug 06 Python
最新PyCharm从安装到PyCharm永久激活再到PyCharm官方中文汉化详细教程
Nov 17 Python
Django项目如何正确配置日志(logging)
Apr 29 Python
初学python的操作难点总结(新手必看篇)
Aug 03 #Python
python 禁止函数修改列表的实现方法
Aug 03 #Python
详解Python函数可变参数定义及其参数传递方式
Aug 02 #Python
详解Python import方法引入模块的实例
Aug 02 #Python
Python字符串拼接的几种方法整理
Aug 02 #Python
详解 Python 读写XML文件的实例
Aug 02 #Python
Python MD5加密实例详解
Aug 02 #Python
You might like
php自定义函数之递归删除文件及目录
2010/08/08 PHP
destoon安装出现Internal Server Error的解决方法
2014/06/21 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
Laravel 简单实现Ajax滚动加载示例
2019/10/22 PHP
php封装的page分页类完整实例代码
2020/02/01 PHP
thinkphp 框架数据库切换实现方法分析
2020/05/18 PHP
java与javascript之间json格式数据互转介绍
2013/10/29 Javascript
给html超链接设置事件不使用href来完成跳
2014/04/20 Javascript
告诉你什么是javascript的回调函数
2014/09/04 Javascript
javascript实现网页背景烟花效果的方法
2015/08/06 Javascript
深入理解JS中的substr和substring
2016/04/26 Javascript
js实现按钮控制带有停顿效果的图片滚动
2016/08/30 Javascript
MUI 上拉刷新/下拉加载功能实例代码
2017/04/13 Javascript
微信小程序 生命周期函数详解
2017/05/24 Javascript
详解vue 实例方法和数据
2017/10/23 Javascript
webpack4+express+mongodb+vue实现增删改查的示例
2018/11/08 Javascript
Vue项目实现简单的权限控制管理功能
2019/07/17 Javascript
浅谈Vue中render中的h箭头函数
2019/11/07 Javascript
js、jquery实现列表模糊搜索功能过程解析
2020/03/27 jQuery
js+canvas实现五子棋小游戏
2020/08/02 Javascript
原生JavaScript实现贪吃蛇游戏
2020/11/04 Javascript
[03:06]3分钟带你回顾DOTA2完美盛典&完美大师赛
2017/12/06 DOTA
Python 可爱的大小写
2008/09/06 Python
简单谈谈python中的Queue与多进程
2016/08/25 Python
Python实现去除列表中重复元素的方法小结【4种方法】
2018/04/27 Python
详解Python3的TFTP文件传输
2018/06/26 Python
对TensorFlow的assign赋值用法详解
2018/07/30 Python
python微元法计算函数曲线长度的方法
2018/11/08 Python
如何基于Python获取图片的物理尺寸
2019/11/25 Python
html5 canvas合成海报所遇问题及解决方案总结
2017/08/03 HTML / CSS
学习自我鉴定
2014/02/01 职场文书
大专会计自我鉴定
2014/02/06 职场文书
四年级评语大全
2014/04/21 职场文书
民事赔偿协议书
2014/11/02 职场文书
2015年惩防体系建设工作总结
2015/05/22 职场文书
Ajax请求超时与网络异常处理图文详解
2021/05/23 Javascript