2017-12-03 25 views
6

miras ve Sorumluluk tasarım modelinin Zincir kullanılarakPython - Ben 3 sınıfları ile test kod yazmak

ve ben print(c._abc is b._abc) baskı altına kodu hakkında karıştı, cevap Doğru, ama benim asıl düşünce olduğunu ikidir farklıdır.

Ardından, 2. Aşama, self._abc = kwargs unvanından rahatsızlık duyuyorum ve diğer 3 satırı, cevabını yanıtlayın.

Neden böyle?

import abc 

class A: 
    __metaclass__ = abc.ABCMeta 

    _abc = {} 

    def __init__(self,successor=None,**kwargs): 
     self._successor = successor 

    @abc.abstractmethod 
    def handlerRequest(self): 
     pass 

class B(A): 

    def __init__(self,successor=None,**kwargs): 
     self._successor = successor 
     print(kwargs) 
     # self._abc = kwargs     # round 2<---uncomment here 
     self._abc['a'] = kwargs['a']   # round 2<---comment here 
     self._abc['b'] = kwargs['b']   # round 2<---comment here 
     self._abc['Hello'] = 'World'   # round 2<---comment here 

    def handlerRequest(self): 
     if (self._successor is not None): 
      self._successor.handlerRequest() 

     print(self._abc) 

class C(A): 

    def handlerRequest(self): 
     if (self._successor is not None): 
      self._successor.handlerRequest() 
     print(self._abc) 

list = {'a':1,'b':2} 
b = B(**list) 
c = C(b) 
print(c._abc is b._abc) 
c.handlerRequest() 

cevap