summaryrefslogtreecommitdiff
path: root/modules/oop/pf-objects.scm
diff options
context:
space:
mode:
Diffstat (limited to 'modules/oop/pf-objects.scm')
-rw-r--r--modules/oop/pf-objects.scm27
1 files changed, 16 insertions, 11 deletions
diff --git a/modules/oop/pf-objects.scm b/modules/oop/pf-objects.scm
index 579a148..eff5853 100644
--- a/modules/oop/pf-objects.scm
+++ b/modules/oop/pf-objects.scm
@@ -159,15 +159,16 @@ explicitly tell it to not update etc.
(cdr r)
fail)))
+(define inclass (make-fluid #f))
(define-method (find-in-class (klass <p>) key -fail)
(let ((h (slot-ref klass 'h)))
(aif dict (hash-ref h '__dict__)
- (kif it (py-get dict key fail)
+ (kif it (py-get dict key fail)
it
- (kif it (py-get dict (symbol->string key) fail)
- it
- (hash-ref h key -fail)))
- (hash-ref h key -fail))))
+ (kif it (py-get dict (symbol->string key) fail)
+ it
+ (hash-ref h key -fail)))
+ (hash-ref h key -fail))))
(define-method (find-in-class x key fail) fail)
@@ -217,8 +218,6 @@ explicitly tell it to not update etc.
(define (mk-getter-object f)
(lambda (obj cls)
- (find-in-class obj '__name__ #f)
- (find-in-class cls '__name__ #f)
(if (pytype? obj)
f
(if (pyclass? obj)
@@ -1452,15 +1451,21 @@ explicitly tell it to not update etc.
it2
it1))
(kif it2 (ficap self key fail)
- it2
+ (if (pyobject? self)
+ it2
+ (aif dd1 (ref it2 '__get__)
+ (dd1 self self)
+ it2))
(aif it (ficap-raw class '__getattr__ #f)
(kif it1 (catch #t
(lambda ()
(it self (symbol->string key)))
(lambda x fail))
- (aif dd1 (ref it1 '__get__)
- (dd1 self class)
- it1)
+ (if (pyobject? self)
+ it1
+ (aif dd1 (ref it1 '__get__)
+ (dd1 self self)
+ it1))
fail)
fail)))
fail)))