fork download
  1. #!/usr/bin/env python3
  2.  
  3. from abc import ABCMeta, abstractmethod
  4. import datetime
  5.  
  6. class DBint(metaclass=ABCMeta):
  7. @abstractmethod
  8. def getData(self):
  9. pass
  10.  
  11. class DB(DBint):
  12. def getData(self):
  13. return 'private data'
  14.  
  15. class Proxy(DBint):
  16. def __init__(self, db):
  17. self.db = db
  18.  
  19. def getData(self):
  20. self.writeLog()
  21. return self.db.getData()
  22.  
  23. def writeLog(self):
  24. print('request data in:', datetime.datetime.now())
  25.  
  26. class User:
  27. def __init__(self, dataObj):
  28. self.dataObj = dataObj
  29.  
  30. def requestData(self):
  31. return self.dataObj.getData()
  32.  
  33.  
  34. db = DB()
  35. user1 = User(db)
  36. print(user1.requestData())
  37.  
  38. proxy = Proxy(db)
  39. user2 = User(proxy)
  40. print(user2.requestData())
  41.  
Success #stdin #stdout 0.02s 27984KB
stdin
Standard input is empty
stdout
private data
request data in: 2019-03-13 17:44:32.732876
private data