Hi: I am puzzled about the following piece of code which attempts to create a class that can be used as record or struct with a limited set of allowed attributes that can be set into an instance of the class.
class RecordClass(object): __slots__ = ["foo"] def __init__(self, args): print "Initial slots = ", RecordClass.__slots__ RecordClass.__slots__ = list(args) print "Final slots = ", RecordClass.__slots__ pass def new_record(slotlist): return RecordClass(slotlist) if __name__ == "__main__": record1 = new_record(["age", "name", "job"]) record1.age = 27 record1.name = 'Fred' record1.job = 'Plumber' record1.salary = 50000 When executed I get: Initial slots = ['foo'] Final slots = ['age', 'name', 'job'] Traceback (most recent call last): File "D:\ProgrammingProjects\JustForTesting\recordclasses.py", line 37, in ? record1.age = 27 AttributeError: 'RecordClass' object has no attribute 'age' I don't understand why I cannot set an attribute 'age' into record1. Thanks, Don. -- http://mail.python.org/mailman/listinfo/python-list