Skip to content

Commit 6795ef2

Browse files
Added the assignment solution code files
1 parent c9aa3a7 commit 6795ef2

2 files changed

Lines changed: 48 additions & 0 deletions

File tree

decorator_as_context_manager.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from contextlib import ContextDecorator
2+
3+
class my_decorator(ContextDecorator):
4+
def __enter__(self):
5+
print('Entering the decorated function')
6+
return self
7+
8+
def __exit__(self, exc_type, exc_val, exc_tb):
9+
print('Exiting the decorated function')
10+
11+
def __call__(self, func):
12+
def wrapper(*args, **kwargs):
13+
with self:
14+
return func(*args, **kwargs)
15+
return wrapper
16+
17+
@my_decorator()
18+
def my_function():
19+
print('Inside the decorated function')
20+
21+
my_function()
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
class DependencyInjector:
2+
def __init__(self):
3+
self.dependencies = {}
4+
5+
def register_dependency(self, name, dependency):
6+
self.dependencies[name] = dependency
7+
8+
def __call__(self, func):
9+
def wrapper(*args, **kwargs):
10+
for name, dependency in self.dependencies.items():
11+
kwargs[name] = dependency
12+
return func(*args, **kwargs)
13+
return wrapper
14+
15+
dependency_injector = DependencyInjector()
16+
17+
class MyDependency:
18+
def __init__(self):
19+
self.value = 42
20+
21+
dependency_injector.register_dependency('my_dependency', MyDependency())
22+
23+
@dependency_injector
24+
def my_function(my_dependency):
25+
print(my_dependency.value)
26+
27+
my_function()

0 commit comments

Comments
 (0)