From ecd0540ef80b46c2e1a76268d6f8ca2801189d02 Mon Sep 17 00:00:00 2001 From: Stefan Israelsson Tampe Date: Thu, 5 Oct 2017 17:32:09 +0200 Subject: super trouper --- modules/language/python/property.scm | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 modules/language/python/property.scm (limited to 'modules/language/python/property.scm') 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 () + (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)))) + + -- cgit v1.2.3