diff options
author | Stefan Israelsson Tampe <stefan.itampe@gmail.com> | 2018-04-25 20:00:41 +0200 |
---|---|---|
committer | Stefan Israelsson Tampe <stefan.itampe@gmail.com> | 2018-04-25 20:00:41 +0200 |
commit | 1b2144cfb35202c05f39f279198a6ad90748be23 (patch) | |
tree | 405845e063b778e7b05077dbc66cbc318c5e0c0c /modules/language/python/dict.scm | |
parent | 70e3ba150960fdbd46c69e00ef6f7437f99966c8 (diff) |
improvements
Diffstat (limited to 'modules/language/python/dict.scm')
-rw-r--r-- | modules/language/python/dict.scm | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/modules/language/python/dict.scm b/modules/language/python/dict.scm index f76e2ad..0e130d0 100644 --- a/modules/language/python/dict.scm +++ b/modules/language/python/dict.scm @@ -123,7 +123,7 @@ 0 o)) (define-method (py-hash (o <py-hashtable>)) - (slot-ref o 'h)) + (slot-ref o 'hash)) (define-method (len (o <hashtable>)) (hash-fold (lambda (k v s) (+ s 1)) 0 o)) @@ -543,7 +543,31 @@ (define-method (in key (o <py-hashtable>)) (py-has_key o key)) + +(define <dict> `(,<py-hashtable> . _)) +(define dict-set! (resolve-method-g pylist-set! <dict>)) +(define dict-ref (resolve-method-g pylist-ref <dict>)) +(define dict-del! (resolve-method-g pylist-delete! <dict>)) +(define dict-pop! (resolve-method-g pylist-pop! <dict>)) +(define dict-clear! (resolve-method-g py-clear <dict>)) +(define dict-get (resolve-method-g py-get <dict>)) +(define dict-len (resolve-method-g len <dict>)) +(define dict-bool (resolve-method-g bool <dict>)) + + (define-python-class dict (<py-hashtable>) + (define __getitem__ dict-ref) + (define __setitem__ dict-set!) + (define __delitem__ dict-del!) + (define pop dict-pop!) + (define clear dict-clear!) + (define get dict-get) + (define __len__ dict-len) + (define __bool__ dict-bool) + (define __format___ (lambda x #f)) + (define __setattr__ (@@ (oop pf-objects) __setattr__)) + (define __getattribute__ (@@ (oop pf-objects) __getattribute__)) + (define __init__ (letrec ((__init__ (case-lambda |