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中的“this”操作符感到困惑   java更改Libgdx按钮外观   java返回到上一个开关案例   java返回带有可选对象的完全未来列表   java应该只在更新JPA中的整个实体时使用“合并”吗?   java如何将x个整数拆分为y个数组?   java HQL多where子句   java类“org.apache.activemq.jms.pool.PooledConnectionFactory”的哪个属性应该用于超时连接请求?   java运行servlet程序   JavaSpring数据JPA/REST更新子集合   eclipse工具,用于从源代码中提取java类层次结构和调用图(使用api)   java如何在Eclipse中打开Tomcat的自动重启?   java使用并发包中的同步器。FutureTask始终返回null   java Spring Boot@ExceptionHandler隐藏异常名称   java无法访问ActivityCompatApi23类文件   忙时无法将Java窗口置于最前面   java Play Framework 2.5.12从调用中获取方法