Mario Figueiredo wrote: > Hello everyone, > > [Python 3.X] > > I have the following factory model for the initialization of a class > tree (code abbreviated for simplicity). > > # item.py > class BadItemType(Exception): > pass > > class Item: > def __init__(self, _data): > > class Container(Item): > def __init__(self, _data): > Item.__init__(self, _data) > # ... > > class Tool(Item): > def __init__(self, _data): > Item.__init__(self, _data) > # ... > > def spawn(type_, id_): > if type_ not in Item.__subclasses__(): > raise BadItemType() > # ... > return type_(data) > > I'd like to know your opinions on an acceptable way to flag the Item > class and its derived classes so users of this module know they should > avoid instantiating them directly. > > Other than the obvious notes on the classes docstrings, is it good > enough I mark the constructor argument as an implementation variable as > I did?
You can delete the class from the namespace: class Item: ... def spawn_item(id, class_=Item): ... return class_(data) del Item -- https://mail.python.org/mailman/listinfo/python-list