Advertisement
Locoluis

Make class attributes strong-typed

Mar 19th, 2016
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.48 KB | None | 0 0
  1. class TypedObject(object):
  2.     def __setattr__(self, name, value):
  3.         attr = object.__getattribute__(self, name)
  4.         if type(value) != type(attr):
  5.             raise TypeError(name + " must be an " + type(attr).__name__)
  6.         object.__setattr__(self, name, value)
  7.  
  8. class SampleClass(TypedObject):
  9.     intValue = int()
  10.     strValue = str()
  11.  
  12. instance = SampleClass()
  13. # Works
  14. instance.strValue = "Okay"
  15. # Yields a TypeError
  16. instance.intValue = "Argh!"
  17. # Yields an AttributeError
  18. instance.otherValue = 2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement