博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
类切换 与 __init__参数自动初始化实例变量
阅读量:6226 次
发布时间:2019-06-21

本文共 1379 字,大约阅读时间需要 4 分钟。

hot3.png

《python Cook Book》chapter 6 notes.

一、缓存环的实现

该节中讲述了类切换技术和方法切换技术。当需要成组地切换所有的方法时,类切换方法可能是最佳的,而方法切换则在需要更细的行为粒度控制的时候更加合适。

class RingBuff(object):    def __init__(self, maxsize):        self.maxsize = maxsize        self.buff = []    class __Full(object):        def append(self, x):            self.buff[self.cur] = x            self.cur = (self.cur + 1) % self.maxsize        def tolist(self): # return with right order             return self.buff[self.cur:] + self.buff[:self.cur]    def append(self, data):        self.buff.append(data)        if (len(self.buff) == self.maxsize):            self.cur = 0            self.__class__ = self.__Full # change class    def tolist(self):        return self.buffif __name__ == '__main__':    buff = RingBuff(5)    for x in xrange(4): buff.append(x)    print buff.tolist()    buff.append(4)    buff.append(5)    print buff.tolist(

二、__init__参数自动初始化实例变量

def attributesFromDict(d):    self = d.pop('self')    for name, value in d.iteritems():        setattr(self, name, value)class Myclass(object):    def __init__(self, name, age, weight):        attributesFromDict(locals())if __name__ == '__main__':    student = Myclass('asdf', 23, 64)    print student.name, student.age, student.
避免在__init__中对每个变量一一写赋值语句。此方法的局限性:attributesFromDict无法区分字典里的传递给__init__的参数__init__内部的局部变量。最好的方法是用标准库inspect模块。

转载于:https://my.oschina.net/acemumu/blog/110353

你可能感兴趣的文章
列、约束重命名,原数据不丢失
查看>>
【笔记】老程序员从头开始学JQuery的读书笔记02
查看>>
单点登录系统(一)
查看>>
[转]性能测试之性能计数器和监测工具
查看>>
HZAU1098: Yifan and War3(区间dp)
查看>>
html
查看>>
关于ajax中async: false的作用
查看>>
GitHub帮助文档翻译1——helloWorld
查看>>
文件的下载,随机验证码(无验证)登录注册
查看>>
第27章 java I/O输入输出流
查看>>
search-a-2d-matrix
查看>>
Ubuntu 12.04 Virtualbox 启用USB 设备支持
查看>>
C# DataTable的常用用法讲解
查看>>
〖Linux〗秒开www.stackoverflow.com,非代理方式
查看>>
〖Linux〗Linux的smb地址转换Windows格式(两者互转)
查看>>
mnesia
查看>>
python编程基础之二十一
查看>>
YouTrack Changing Database Location for EXE Distribution(windows service)
查看>>
Cooperation.GTST团队第二周项目总结
查看>>
zookeeper与kafka安装部署及java环境搭建(发布订阅模式)
查看>>