File tree Expand file tree Collapse file tree 1 file changed +18
-6
lines changed Expand file tree Collapse file tree 1 file changed +18
-6
lines changed Original file line number Diff line number Diff line change 13
13
class Delegator (object ):
14
14
"""
15
15
>>> delegator = Delegator(Delegate())
16
+ >>> delegator.p1
17
+ 123
18
+ >>> delegator.p2
19
+ Traceback (most recent call last):
20
+ ...
21
+ AttributeError: 'Delegate' object has no attribute 'p2'
16
22
>>> delegator.do_something("nothing")
17
23
'Doing nothing'
18
24
>>> delegator.do_anything()
19
-
25
+ Traceback (most recent call last):
26
+ ...
27
+ AttributeError: 'Delegate' object has no attribute 'do_anything'
20
28
"""
21
29
22
30
def __init__ (self , delegate ):
23
31
self .delegate = delegate
24
32
25
33
def __getattr__ (self , name ):
26
- def wrapper (* args , ** kwargs ):
27
- if hasattr (self .delegate , name ):
28
- attr = getattr (self .delegate , name )
29
- if callable (attr ):
30
- return attr (* args , ** kwargs )
34
+ attr = getattr (self .delegate , name )
35
+
36
+ if not callable (attr ):
37
+ return attr
31
38
39
+ def wrapper (* args , ** kwargs ):
40
+ return attr (* args , ** kwargs )
32
41
return wrapper
33
42
34
43
35
44
class Delegate (object ):
45
+ def __init__ (self ):
46
+ self .p1 = 123
47
+
36
48
def do_something (self , something ):
37
49
return "Doing %s" % something
38
50
You can’t perform that action at this time.
0 commit comments