A Suggestion for Python Dictionary/Class
Tim Hochberg
tim.hochberg at ieee.org
Fri Dec 22 20:58:56 EST 2000
More information about the Python-list mailing list
Fri Dec 22 20:58:56 EST 2000
- Previous message (by thread): A Suggestion for Python Dictionary/Class
- Next message (by thread): A Suggestion for Python Dictionary/Class
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
"William Djaja Tjokroaminata" <billtj at y.glue.umd.edu> >: >However, there is a fundamental difference with Python class. The members > are implemented using dictionary. The danger with dictionary is, even > though a key does not exist, we still can make an assignment to it. When > we make some typo, this can be hard to debug. For example: Several people have suggested using a custom __setattr__ to prevent modifying the class dictionary. Personally I think this is not normally worth the hassle, but I think the following is a fun variation on the __setattr__ anyway. It has the added twist of checking type, although that could easily be disabled. -tim --------------------------------------- import types class Typed: def __setattr__(self, key, value): if not hasattr(self.__class__, key): raise KeyError("can not set %s" % key) if type(value) != getattr(self.__class__, key): raise ValueError("%s must be of type %s" % (key, getattr(self.__class__, key))) self.__dict__[key] = value class MyTypedClass(Typed): anInt = types.IntType aFloat = types.FloatType aString = types.StringType aTuple = types.TupleType m = MyTypedClass() m.anInt = 5 m.aFloat = 5.0 m.aString = "five" m.aTuple = (1,2,3,4,5) try: m.somethingElse = 5 except StandardError, err: print err try: m.anInt = 5.0 except StandardError, err: print err
- Previous message (by thread): A Suggestion for Python Dictionary/Class
- Next message (by thread): A Suggestion for Python Dictionary/Class
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list