Object oriented 3

Group exercises, call other members initiatively

 

Combinatorial exercises

The first question:

  

 1 class StarkConfig(object):
 2     def __init__(self,num):
 3         self.num = num
 4 
 5     def changelist(self,request):
 6         print(self.num,request)
 7 
 8 class RoleConfig(StarkConfig):
 9      def changelist(self,request):
10         print(666,self.num)
11 
12 #A list is created, with three instances of objects in the list.
13 [StarkConfigObject (num=1), StarkConfig object (num=2), RoleConfig object (num=3))]
14 config_obj_list = [StarkConfig(1),StarkConfig(2),RoleConfig(3)]
15 for item in config_obj_list:
16     item.changelist(999)

The results are as follows: 1168

      2 168

      666 3

Second questions:

 1 class StarkConfig(object):
 2     def __init__(self,num):
 3         self.num = num
 4 
 5     def changelist(self,request):
 6         print(self.num,request)
 7     
 8     def run(self):
 9         self.changelist(999)
10 
11 class RoleConfig(StarkConfig):
12     def changelift(self,request):
13         print(666,self.num)
14 
15 config_obj_list = [StarkConfig(1),StarkConfig(2),RoleConfig(3)]
16 config_obj_list[1].run()
17 config_obj_list[2].run()

The results are as follows:

  1 999

  2 999

  666 3

 

Third questions:

 1 class StarkConfig(object):
 2     def __init__(self,num):
 3         self.num = num
 4     
 5     def changelist(self,request):
 6         print(self.num,changelist)
 7 
 8     def run(self):
 9         self.changelift(999)
10 
11 class RoleConfig(StarkConfig):
12     def changelift(self,request):
13         print(666,self.num)
14 
15 class AdminSite(object):
16     def __init__(self):
17         self._registry = {}
18 
19     def register(self,k,v):
20         self.registry[k] = v
21 
22 site = AdminSite()
23 print(len(site._registry))#0
24 site.register("abc",666)
25 site.register("def",999)
26 print(len(site._registry))#2
  
  site.register("lyd",StarkConfig(19))
  site.register("yjl",StarkConfig(20))
  site.register("fgz",RoleConfig(30))
  print(len(site._registry))#5

Fourth questions:

 1 class StarkConfig(object):
 2     def __init__(self,num):
 3         self.num = num
 4     
 5     def changelist(self,request):
 6         print(self.num,request)
 7 
 8     def run(self):
 9         self.changelist(999)
10 
11 class RoleConfig(StarkConfig):
12     def changelist(self,request):
13         print(666,self.num)
14 
15 class AdminSite(object):
16     def __init__(self):
17         self._registry = {}
18 
19     def register(self,k,v):
20         self._registry[k] = v
21 
22 site = AdminSite()
23 site.register("lyd",StarkConfig(19))
24 site.register("yjl",StarkConfig(20))
25 site.register("fgz",RoleConfig(21))
26 
27 print(len(siter._registry))
28 
29 for k,row in site._registry.items():
30     row.changelist(5)

The results are as follows:

  3

  19  5

  20  5

  666  33

 

Fifth questions:

 1 class StarkConfig(object):
 2     def __init__(self,num):
 3         self.num = num
 4 
 5     def changelist(self,request):
 6         print(self.num,changelist)
 7 
 8     def run(self):
 9         self.changelist(999)
10 
11 class RoleConfig(StarkConfig):
12     def changelist(self,request):
13         print(666,self.num)
14 
15 class AdminSite(object):
16     def __init__(self):
17         self._registry = {}
18     
19     def register(self,k,v):
20         self._registry[k] = v
21 
22 site = AdminSite()
23 site.register("a",StarkConfig(19))
24 site.register("b",StarkConfig(20))
25 site.register("c",RoleConfig(33))
26 print(len(site._registry))
27 
28 for k,row in site._registry.items():
29     row.run()

The results are as follows:

  3

  19  999

  20  999

  666  33

 

Sixth questions:

 1 class UserInfo(object):
 2     pass
 3 
 4 class Department(object):
 5     pass
 6 
 7 class StarkConfig(object):
 8     def __init__(self,num):
 9         self.num = num
10 
11     def changelist(self,request):
12         print(self.num,request)
13 
14     def run(self):
15         self.changelist(999)
16 
17 class RoleConfig(StarkConfig):
18     def __init__(self):
19         self._registry = {}
20     
21     def register(self,k,v):
22         self._registry[k] = v(k)
23 
24 class AdminSite(object):
25     def __init__(self):
26         self._registry[k] = v[k]
27 
28 site = AdminSite()
29 site.register(UserInfo,StarkConfig)
30 site.register(Department,StarkConfig)
31 print(len(site._registry))
32 
33 for k,row in site._registry.items():
34     row.run()

The results are as follows:

  Class UserInfo 999

  Class Department 999

 

 

Initiatively calling other members

  Mode 1:

    

 1 class Base(object):
 2     def f1(self):
 3         print(1)
 4 
 5 class Foo(object):
 6     def f1(self):
 7         print(2)
 8         Base.f1(self)
 9 
10 obj = Foo()
11 obj.f1()
12 
13 #Base.Instance method (self propagation self) has nothing to do with inheritance.

  Mode 2: looks up the next one according to the inheritance order of the class.

 1 class Foo(object):
 2     def f1(self):
 3         super().f1()
 4         print(1)
 5 
 6 class Bar(object):
 7     def f1(self):
 8         print(2)
 9 
10 class Info(Foo,Bar):
11     pass
12 
13 obj = Foo()
14 obj.f1()
#2
#1

 

Leave a Reply

Your email address will not be published. Required fields are marked *