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传递位置作为FragmentPagerAdapter中片段的参数   html Java Jsoup循环打印   java如何使用FileOutputStream写入数据而不丢失旧数据?   java在测试用例类/方法中执行sql before/after/in   java在javafx中注册鼠标处理程序,但处理程序不是内联的   Android嵌入了一个C++库的java代码,不需要TopPLE程序来嵌入它?   片段类内部的java ProgressBar导致setMax方法出现NullPointerException?   带有google app engine的java Activator Play框架   java如何解析星级而不是字符串?   java如何在基本实体中定义通用主键字段?   通过扩展实现Java克隆   使用CipherOutputStream的java递归加密提供一个空字节[]   在运行时提取字段值的Java服务   Java 11和spring boot从spring boot应用程序的fat jar中的依赖项jar加载资源   java尝试使用J2SE枚举所有可用的Wifi网络   使用Java库进行SWIFT MT消息解析   java拆分非逗号分隔的字符串   java为什么toString()不能是静态方法?   java在连接到集群数据库时遇到mongo异常   java访问Hashmap中存储的json有效负载值