mixin_3.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. class PermissionnMixin:
  2. def __init__(self):
  3. self.permissions = set()
  4. def grant_permission(self, permission):
  5. self.permissions.add(permission)
  6. def revoke_permission(self, permission):
  7. self.permissions.discard(permission)
  8. def has_permission(self, permission):
  9. return permission in self.permissions
  10. class User(PermissionnMixin):
  11. def __init__(self, name, email):
  12. super().__init__()
  13. self.name = name
  14. self.email = email
  15. def main():
  16. user1 = User('Alice', 'alice@example.com')
  17. user2 = User('Bob', 'bob@example.com')
  18. assert user1.email == 'alice@example.com'
  19. assert user1.name == 'Alice'
  20. assert user1.permissions == set()
  21. assert user2.email == 'bob@example.com'
  22. assert user2.name == 'Bob'
  23. assert user2.permissions == set()
  24. user1.grant_permission('read')
  25. user1.grant_permission('write')
  26. user2.grant_permission('read')
  27. assert user1.permissions == {'read', 'write'}
  28. assert user2.permissions == {'read'}
  29. assert user1.has_permission('read') is True
  30. assert user1.has_permission('write') is True
  31. assert user1.has_permission('execute') is False
  32. assert user2.has_permission('read') is True
  33. assert user2.has_permission('write') is False
  34. assert user2.has_permission('execute') is False
  35. user1.revoke_permission('write')
  36. user1.revoke_permission('execute')
  37. assert user1.has_permission('read') is True
  38. assert user1.has_permission('write') is False
  39. assert user1.has_permission('execute') is False
  40. print('Good')
  41. if __name__ == '__main__':
  42. main()