Files
python-VM/learning/descriptors/descriptors2.py

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)