To demonstrate the proxy pattern, we will implement a simple protection proxy to view and add users. The service provides two options:

  • Viewing the list of users: This operation does not require special privileges
  • Adding a new user: This operation requires the client to provide a special secret message

The SensitiveInfo class contains the information that we want to protect. The users variable is the list of existing users. The read() method prints the list of the users. The add() method adds a new user to the list.

Let's consider the following code:

class SensitiveInfo:     def __init__(self):         self.users = ['nick', 'tom', 'ben', 'mike']       def read(self):         nb = len(self.users) print(f"There are {nb} users: {' '.join(self.users)}") ...

Get Mastering Python Design Patterns - Second Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.