diff options
author | Stefan Israelsson Tampe <stefan.itampe@gmail.com> | 2017-10-05 17:32:09 +0200 |
---|---|---|
committer | Stefan Israelsson Tampe <stefan.itampe@gmail.com> | 2017-10-05 17:32:09 +0200 |
commit | ecd0540ef80b46c2e1a76268d6f8ca2801189d02 (patch) | |
tree | 1a85b8df0016e14eba725b8ee457580dc309512f /modules/language/python/property.scm | |
parent | ad5e33eba9b1274251ff79db2f4127db430fab3e (diff) |
super trouper
Diffstat (limited to 'modules/language/python/property.scm')
-rw-r--r-- | modules/language/python/property.scm | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/modules/language/python/property.scm b/modules/language/python/property.scm new file mode 100644 index 0000000..eaefc74 --- /dev/null +++ b/modules/language/python/property.scm @@ -0,0 +1,35 @@ +(define-module (language python property) + #:use-module (oop pf-objects) + #:use-module (oop goops) + #:use-module (language python def) + #:use-module (language python exceptions) + #:export (property)) + +(define-python-class property (<property>) + (define __init__ + (lam (o (= getx None) (= setx None) (= delx None)) + (slot-set! o 'get getx) + (slot-set! o 'set setx) + (slot-set! o 'del delx) + o)) + + (define setter + (lambda (self f) + (slot-set! self 'set f) + self)) + + (define getter + (lambda (self f) + (slot-set! self 'get f) + self)) + + (define deleter + (lambda (self f) + (slot-set! self 'del f) + self)) + + (define fget (lambda (self) (slot-ref self 'get))) + (define fset (lambda (self) (slot-ref self 'set))) + (define fdel (lambda (self) (slot-ref self 'del)))) + + |