View difference between Paste ID: hnMGxU3L and r8QuqPuc
SHOW: | | - or go back to the newest paste.
1
# Business and Data Objects
2
import functools
3
class Foo:
4
    def __init__(self,create_bar):
5
        self.create_bar = create_bar
6
    def do_stuff(self,times):
7
        for _ in range(times):
8
            bar = self.create_bar()
9
            print(bar)
10
11
class Bar:
12
    def __init__(self,prefix):
13
        self.prefix = prefix
14
    def __str__(self):
15
        return str(self.prefix)+"Hello"
16
        
17
class Prefix:
18
    def __init__(self,name):
19
        self.name = name
20
        self.count = 0
21
    def __str__(self):
22
        self.count +=1
23
        return self.name+" "+str(self.count)+": "
24
    
25
# Wiring up dependencies
26
def create_bar(prefix):
27
    return Bar(prefix)
28
29
30
def create_prefix(name):
31
    return Prefix(name)
32
33
class BarCreator:
34
    def __init__(self, name):
35-
    return Foo(functools.partial(create_bar,create_prefix(name)))
35+
        self.prefix = create_prefix(name)
36
    def __call__(self):
37
        return create_bar(self.prefix)
38
39
def create_foo(name):
40
    return Foo(BarCreator(name))
41
     
42
#def create_foo(name):
43
#    return Foo(functools.partial(create_bar,create_prefix(name)))
44
45
# Starting the application
46
f1 = create_foo("foo1")
47
f2 = create_foo("foo2")
48
f1.do_stuff(3)
49
f2.do_stuff(2)
50
f1.do_stuff(2)