On Aug 10, 7:37 am, Ulrich Eckhardt <eckha...@satorlaser.com> wrote: > ...that is the question! > > I have a module which exports a type. It also exports a function that > returns instances of that type. Now, the reason for my question is that > while users will directly use instances of the type, they will not create > instances of the type themselves. > > So, the type is a part of the public API, but its constructor is not. Should > I mark the type as private (with a leading underscore) or not?
I would not use the underscore. If the initializer is private you might consider dispensing with __init__ (have it raise TypeError), and initialize it from a "private" method or classmethod, or even directly from the factory function. And if you're wondering how the hell you're going to create the object of type A when you've disabled __init__, see the example classmethod below. class A(object): def __init__(self,*args,**kwargs): raise TypeError('Type not callable; use factory function instead') @classmethod def _create_object(cls,initial_value): self = object.__new__(cls) # avoid __init__ self.value = initial_value Carl Banks -- http://mail.python.org/mailman/listinfo/python-list