python自动绑定dict

bdict的Python项目详细描述


bdict

允许您创建自动方法绑定dict的库。

有没有梦想过写干净的口述,指出方法的关键?别再害怕了!

绑定dict主要用于事件处理程序,它由 任何事件或键,指向类中相应的处理程序函数。 在键查找时,dict将把适当的函数绑定到实例 在班上。

例如:

classServer:"""Typical server with a small mapping between event handlers and functions"""def__init__(self,name):self.name=namedefon_connect(self,remote_host):print(self.name,remote_host)defon_connect(self,remote_host):print(self.name,remote_host)handlers=BDict({NewConnectionEvent:on_connect,DisconnectonEvent:on_disconnect})>>>s=Server("myserver")>>>s.handlers[NewConnectionEvent]("1.2.3.4")myserver1.2.3.4

如您所见,在访问处理程序dict之后,在进行键查找时, dict将处理程序函数绑定到实例。

bdict还以一种简洁而时尚的方式与classmethods一起工作:

classMyClass:"""Typical server with a small mapping between event handlers and functions"""@classmethoddefclass_handle(cls):print(cls.__name__)handlers=BDict({"class_handle":class_handle})>>>MyClass.handlers["class_handle"]<boundmethodMyClass.class_handleof<class'__main__.MyClass'>>>>>MyClass.handlers["class_handle"]()MyClass>>>inst=MyClass()>>>inst.handlers["class_handle"]<boundmethodMyClass.class_handleof<class'__main__.MyClass'>>>>>inst.handlers["class_handle"]()MyClass

通过实例访问bdict时,bdict将在bdict上创建一个内部实例数据容器, 允许您修改它的字典,而不影响其他实例!

>>>inst.handlers[123]=456>>>inst.handlers[123]456>>>inst2=MyClass()>>>inst2.handlers[123]Traceback(mostrecentcalllast):...KeyError:123

用法:

BDict(dict_)

dict_可以是dict或iterable of(key,value)对,并将用于初始化BDict

使用bdict的类必须支持弱引用(绝大多数自定义对象都支持)。如果使用__slots__,则可以通过向插槽中添加__weakref__来完成此操作。

BDict.autobind(key, value)

允许在dict中添加自动绑定项(常规添加不会自动绑定)。key是访问的键,而value是将自动绑定的函数。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java组织。冬眠hql。内部的阿斯特。QuerySyntaxException:<table\u name>未映射[来自<table\u name>]   异常无法有效使用来自Java的多捕获   java Hibernate Search是Lucene的干净抽象吗?   组织。xml。萨克斯。SAXException:没有针对的反序列化程序{http://www.w3.org/2001/XMLSchema}Java中使用Axis的anyType   java是独立于Eclipse平台的吗?   java PigLatin语句转换器方法给出了“indexoutofboundsexception”错误等   java Spring+Jackson+反序列化泛型对象列表   java获取firefox配置文件的配置文件当配置文件计数超过3(包括默认值)时,我没有选择给定的配置文件   java XPages应用程序无法运行   java为什么字符连接返回“int”和?   java如何以正确的方式从静态助手类中的异步方法返回值?   java如何将字符串值转换为整数数组列表   javajackcess表限制?   java如何使用SMACK API和GTALK发送消息?   java按钮显示在左上角,具有不同的外观和感觉