U S¤ðWÁã@s$Gdd„deƒZGdd„deƒZdS)c@s&eZdZddd„Zdd„Zdd„ZdS) Ú hybrid_methodNcCs||_|p ||_dS©N)ÚfuncÚexpr)Úselfrr©rú /hybrid.pyÚ__init__szhybrid_method.__init__cCs&|dkr|j ||j¡S|j ||¡Sr)rÚ__get__Ú __class__r©rÚinstanceZ instance_typerrrr szhybrid_method.__get__cCs ||_|Sr©r©rrrrrÚ expression szhybrid_method.expression)N)Ú__name__Ú __module__Ú __qualname__rr rrrrrrs rc@sFeZdZddd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dS)Úhybrid_propertyNcCs ||_||_||_|p||_dSr)ÚfgetÚfsetÚfdelr)rrrrrrrrrszhybrid_property.__init__cCs|dkr| |¡S| |¡Sr)rrr rrrr s zhybrid_property.__get__cCs"|jdkrtdƒ‚| ||¡dS)NzCannot set attribute.)rÚAttributeError)rr ÚvaluerrrÚ__set__s zhybrid_property.__set__cCs |jdkrtdƒ‚| |¡dS)NzCannot delete attribute.)rr)rr rrrÚ __delete__#s zhybrid_property.__delete__cCs ||_|Sr)r)rrrrrÚsetter(szhybrid_property.settercCs ||_|Sr)r)rrrrrÚdeleter,szhybrid_property.deletercCs ||_|Srr rrrrr0szhybrid_property.expression)NNN) rrrrr rrrrrrrrrrs rN)ÚobjectrrrrrrÚs