38 lines
906 B
Python
38 lines
906 B
Python
from weakref import WeakKeyDictionary
|
|
|
|
|
|
class Drinker:
|
|
def __init__(self):
|
|
self.req_age = 21
|
|
self.age = dict()
|
|
print('init')
|
|
|
|
def __get__(self, instance_obj, objtype):
|
|
print(f'{instance_obj}, {objtype}, {self.age}')
|
|
return self.age.get(instance_obj, self.req_age)
|
|
|
|
def __set__(self, instance, new_age):
|
|
if new_age < 21:
|
|
msg = '{name} is too young to legally imbibe'
|
|
raise Exception(msg.format(name=instance.name))
|
|
self.age[instance] = new_age
|
|
print('{name} can legally drink in the USA'.format(
|
|
name=instance.name))
|
|
|
|
def __delete__(self, instance):
|
|
del self.age[instance]
|
|
|
|
|
|
class Person:
|
|
drinker_age = Drinker()
|
|
|
|
def __init__(self, name, age):
|
|
self.name = name
|
|
self.drinker_age = age
|
|
|
|
|
|
p = Person('Miguel', 30)
|
|
p1 = Person('Bob', 50)
|
|
|
|
p = Person('Niki', 13)
|