self name name self age age inside accesses run normally def __add__(selfn)self age + built-ins caught by mix-in in def __str__(self)return '% % (self nameself agex person('bob' print( namex name 'sueprint( namex print(xtryt age exceptprint(sys exc_info()[ ]tryx age exceptprint(sys exc_info()[ ]outside accesses validated fails unless "python -oditto print(''test names are private if not public operators must be non-private or public in builtinmixin used @public('name''__add__''__str__''__coerce__'class persondef __init__(selfnameage)self name name self age age def __add__(selfn)self age + built-ins caught by mix-in in def __str__(self)return '% % (self nameself agex person('bob' print( namex name 'sueprint( namex print(xx is an oninstance oninstance embeds person tryt age exceptprint(sys exc_info()[ ]tryx age exceptprint(sys exc_info()[ ]fails unless "python -oditto finallyif all works as expectedthis test' output is as follows in both python and --the same code applied to the same class decorated with private and then with publicc:\codepy - access-test py bob sue sue test your knowledgeanswers