diff options
Diffstat (limited to 'modules/language/python')
-rw-r--r-- | modules/language/python/property.scm | 35 | ||||
-rw-r--r-- | modules/language/python/set.scm | 2 |
2 files changed, 36 insertions, 1 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)))) + + diff --git a/modules/language/python/set.scm b/modules/language/python/set.scm index cd12586..f0e2956 100644 --- a/modules/language/python/set.scm +++ b/modules/language/python/set.scm @@ -12,7 +12,7 @@ (define-class <set> () dict) (define miss (list 'miss)) - + (define-python-class set (<set>) (define __init__ (case-lambda |