File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1313class Delegator (object ):
1414 """
1515 >>> 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'
1622 >>> delegator.do_something("nothing")
1723 'Doing nothing'
1824 >>> delegator.do_anything()
19-
25+ Traceback (most recent call last):
26+ ...
27+ AttributeError: 'Delegate' object has no attribute 'do_anything'
2028 """
2129
2230 def __init__ (self , delegate ):
2331 self .delegate = delegate
2432
2533 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
3138
39+ def wrapper (* args , ** kwargs ):
40+ return attr (* args , ** kwargs )
3241 return wrapper
3342
3443
3544class Delegate (object ):
45+ def __init__ (self ):
46+ self .p1 = 123
47+
3648 def do_something (self , something ):
3749 return "Doing %s" % something
3850
You can’t perform that action at this time.
0 commit comments