1.动态添加属性

class Lang(object):
def __init__(self,name,score):
self.name=name
self.score=score
def langinfo(self):
print '%s:%s'%(self.name,self.score)
lang1=Lang('Python','8.5')
lang1.rank=4
print lang1.rank

运行结果:

2.动态添加方法

from types import MethodType
class Lang(object):
def __init__(self,name,score):
self.name=name
self.score=score
def langinfo(self):
print '%s:%s'%(self.name,self.score)
lang1=Lang('Python','8.5')
def getrank(self):
return 4
lang1.getrank=MethodType(getrank,lang1,Lang)
print lang1.getrank()

运行结果:

这种方法只是给实例lang1,动态添加了方法

from types import MethodType
class Lang(object):
def __init__(self,name,score):
self.name=name
self.score=score
def langinfo(self):
print '%s:%s'%(self.name,self.score)
lang1=Lang('Python','8.5')
lang2=Lang('C','')
def getrank(self):
return 4
lang1.getrank=MethodType(getrank,lang1,Lang)
print lang2.getrank()

运行结果:

给类添加方法:

from types import MethodType
class Lang(object):
def __init__(self,name,score):
self.name=name
self.score=score
def langinfo(self):
print '%s:%s'%(self.name,self.score)
lang1=Lang('Python','8.5')
lang2=Lang('C','')
def getrank(self):
return 4
Lang.getrank=MethodType(getrank,None,Lang)
print lang2.getrank()

运行结果:

3.限制Class属性 __slots__

#__slots__使用
from types import MethodType
class Lang(object):
__slots__=('name','score','rank')
def __init__(self,name,score):
self.name=name
self.score=score
def langinfo(self):
print '%s:%s'%(self.name,self.score)
lang1=Lang('Python','8.5')
lang1.rank=4
lang1.desc='Simple'
print lang1.rank

运行结果:

python __slots__使用详解的更多相关文章

  1. (转)python collections模块详解

    python collections模块详解 原文:http://www.cnblogs.com/dahu-daqing/p/7040490.html 1.模块简介 collections包含了一些特 ...

  2. Python 字符串方法详解

    Python 字符串方法详解 本文最初发表于赖勇浩(恋花蝶)的博客(http://blog.csdn.net/lanphaday),如蒙转载,敬请保留全文完整,切勿去除本声明和作者信息.        ...

  3. python time模块详解

    python time模块详解 转自:http://blog.csdn.net/kiki113/article/details/4033017 python 的内嵌time模板翻译及说明  一.简介 ...

  4. Python中dict详解

    from:http://www.cnblogs.com/yangyongzhi/archive/2012/09/17/2688326.html Python中dict详解 python3.0以上,pr ...

  5. Python开发技术详解(视频+源码+文档)

    Python, 是一种面向对象.直译式计算机程序设计语言.Python语法简捷而清晰,具有丰富和强大的类库.它常被昵称为胶水语言,它能够很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松地联结 ...

  6. python/ORM操作详解

    一.python/ORM操作详解 ===================增==================== models.UserInfo.objects.create(title='alex ...

  7. 【python进阶】详解元类及其应用2

    前言 在上一篇文章[python进阶]详解元类及其应用1中,我们提到了关于元类的一些前置知识,介绍了类对象,动态创建类,使用type创建类,这一节我们将继续接着上文来讲~~~ 5.使⽤type创建带有 ...

  8. Python开发技术详解PDF

    Python开发技术详解(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1F5J9mFfHKgwhkC5KuPd0Pw 提取码:xxy3 复制这段内容后打开百度网盘手 ...

  9. python之数据类型详解

    python之数据类型详解 二.列表list  (可以存储多个值)(列表内数字不需要加引号) sort s1=[','!'] # s1.sort() # print(s1) -->['!', ' ...

随机推荐

  1. java thread dump日志分析

    jstack Dump 日志文件中的线程状态 dump 文件里,值得关注的线程状态有: 死锁,Deadlock(重点关注)  执行中,Runnable 等待资源,Waiting on conditio ...

  2. zookeeper技术浅析

    Zookeeper是hadoop的一个子项目,尽管源自hadoop,可是我发现zookeeper脱离hadoop的范畴开发分布式框架的运用越来越多. 今天我想谈谈zookeeper.本文不谈如何使用z ...

  3. Eclipse中jar包关联JDK源代码

    1.点 “window”-> "Preferences" -> "Java" -> "Installed JRES"2.此 ...

  4. IntelliJ IDEA 2017.2.2 的破解 有效期 2116年

      破解三部曲 下载破解文件 JetbrainsCrack-2.6.6-release-enc.jar http://idea.lanyus.com/jar/JetbrainsCrack-2.6.6- ...

  5. eclipse to avoid the message, disable the...

      标题 CreateTime--2018年5月9日10:38:15 Author:Marydon 1.问题描述 2.问题解析 这是因为eclipse的智能提示超时引起的,将超时间调大即可,如:200 ...

  6. JS禁止后退键(backspace)使浏览器后退

    背景说明: 今天项目测试中,同事发现一个Bug,当键盘敲下后退键(Backspace)后,浏览器自动后退,不符合需求,故建议禁止浏览器后退键. 提出需求: 当键盘敲下后退键(Backspace)后 1 ...

  7. tarfile模块可以方操作tar归档文件

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #Python自带的tarfile模块可以方便读取tar归档文件 #http://www.open-open. ...

  8. java 新创建的类要重写的方法

    重写toString方法,可以控制println打印的结构. 如果需要往hashSet或者HashMap中存,需要重写hashCode和equals方法,因为hashSet执行添加,以对象为参数删除, ...

  9. 防止线程退出的几种方案-不再while(true)

    有时候 调试程序的时候 .我们需要防止程序退出.比如调试一个定时服务. 方法1 while(true) {Thread.Sleep(1000)} 方法 2——(推荐) Well when you do ...

  10. OpenWrt中wifidog的配置及各节点页面参数

    修改/etc/wifidog.conf, 只需要修改文件的前半部分, 其他都保持默认 GatewayID default GatewayInterface br-lan GatewayAddress ...