| 84 | |
| 85 | print("Example 4") |
| 86 | class ValidatingRecord: |
| 87 | def __init__(self): |
| 88 | self.exists = 5 |
| 89 | |
| 90 | def __getattribute__(self, name): |
| 91 | print(f"* Called __getattribute__({name!r})") |
| 92 | try: |
| 93 | value = super().__getattribute__(name) |
| 94 | print(f"* Found {name!r}, returning {value!r}") |
| 95 | return value |
| 96 | except AttributeError: |
| 97 | value = f"Value for {name}" |
| 98 | print(f"* Setting {name!r} to {value!r}") |
| 99 | setattr(self, name, value) |
| 100 | return value |
| 101 | |
| 102 | data = ValidatingRecord() |
| 103 | print("exists: ", data.exists) |