From ae868fee71cb15ef87728aef80b3763f7f12ac47 Mon Sep 17 00:00:00 2001 From: Karenzz Date: Thu, 6 Apr 2023 22:48:26 +0200 Subject: [PATCH] Update page 'Day 5 Homework - Karen' --- Day 5 Homework - Karen.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 Day 5 Homework - Karen.md diff --git a/Day 5 Homework - Karen.md b/Day 5 Homework - Karen.md new file mode 100644 index 0000000..1f4df49 --- /dev/null +++ b/Day 5 Homework - Karen.md @@ -0,0 +1,27 @@ +``` +class Vault: + def __init__(self): + self._treasure = "gold" + self._attributes = dict(self.__dict__) + + def __setattr__(self, name, value): + if name != "_attributes" and name not in self._attributes: + print("attribute deleted!") + self._attributes[name] = value + super().__setattr__("_attributes", dict(self.__dict__)) + + @property + def treasure(self): + if self.__dict__ != self._attributes: + print("attribute deleted!") + return self._treasure +``` +To assess other's Vault (although it may not be ethical), we can use "__getattribute__" method like: + +``` +class EvilVault(Vault): + def __getattribute__(self, name): + if name == "treasure": + return "gold" + return super().__getattribute__(name) +``` \ No newline at end of file