summaryrefslogtreecommitdiff
path: root/modules/language/python/property.scm
diff options
context:
space:
mode:
authorStefan Israelsson Tampe <stefan.itampe@gmail.com>2017-10-05 17:32:09 +0200
committerStefan Israelsson Tampe <stefan.itampe@gmail.com>2017-10-05 17:32:09 +0200
commitecd0540ef80b46c2e1a76268d6f8ca2801189d02 (patch)
tree1a85b8df0016e14eba725b8ee457580dc309512f /modules/language/python/property.scm
parentad5e33eba9b1274251ff79db2f4127db430fab3e (diff)
super trouper
Diffstat (limited to 'modules/language/python/property.scm')
-rw-r--r--modules/language/python/property.scm35
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))))
+
+