summaryrefslogtreecommitdiff
path: root/modules/language/python/property.scm
blob: eaefc74284da5032eba999e1002fb7fbd223faf1 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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))))