类切换 与 __init__参数自动初始化实例变量
2013-02-26 11:33
351 查看
《python Cook Book》chapter 6 notes.
一、缓存环的实现
该节中讲述了类切换技术和方法切换技术。当需要成组地切换所有的方法时,类切换方法可能是最佳的,而方法切换则在需要更细的行为粒度控制的时候更加合适。
二、__init__参数自动初始化实例变量
一、缓存环的实现
该节中讲述了类切换技术和方法切换技术。当需要成组地切换所有的方法时,类切换方法可能是最佳的,而方法切换则在需要更细的行为粒度控制的时候更加合适。
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.buff if __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模块。
相关文章推荐
- 用__init__参数自动初始化实例变量
- 3. 定义一个分数类(Fraction) 实例变量:分子,分母 方法:初始化方法(2个参数),便利构造器,约分,打印,加,减,乘,除。
- python类初始化参数赋值,实例直接调用append函数后,导致所有实例中变量改动
- JAVA实例变量的初始化过程
- Objective-C基础知识之(四):实例变量的可变度、初始化方法的声明、self和super的具体应用
- 关于成员变量自动初始化和局部变量手动初始化
- 修改Struts2的struts.xml配置文件位置和名称-重点是init-param参数用来切换加载的路径
- 实例变量的初始化,构造器在new - 创建实例对象的时候,才会调用执行
- 创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。 要求:自己设计函数的参数,返回值。
- 实例说明C语言中初始化和未初始化的全局变量所在不同的段
- KING_C#学习之Thread和Timer实现延时用法(附自动切换窗体实例)
- 2、定义路障僵尸类: 实例变量:僵尸种类、僵尸总血量、僵尸每次失血量,道具,弱点。方法:初始化方法(设置僵尸种类,总血量)、被打击失血、失去装备、死亡。
- 创建一个数组, 实现函数init()初始化数组、 实现reverse()函数完成数组元素的逆置,实现empty()清空数组。要求:自己设计函数的参数,返回值。
- 使用eclipse JDT compile class,解决 无法确定 X 的类型参数;对于上限为 X,java.lang.Object 的类型变量 X,不存在唯一最大实例
- java 类变量和实例变量的初始化
- 利用heartbeat实现三台主机自动切换网络参数(两主一备)
- 工作队列的初始化(INIT_WORK的参数问题)
- Think in Java 实例变量的初始化
- 【C】为什么静态变量会被初始化为0,而自动变量却不会被初始化?
- loadrunner变量参数转换实例