On Tue, Mar 1, 2011 at 5:35 PM, Alan Gauld <alan.ga...@btinternet.com> wrote: > > "David" <bouncingc...@gmail.com> wrote > >> clever enough to refuse to instantiate itself if a necessary condition >> is not met. > > Oops, sent too soon. > > I meant to add that you should realize that the implication of your > design is that the user of the class now has to check each object > to see if it is a valid reference or None. You could raise an exception > instead of returning None which allows a try/except style... > > This extra overhead is one reason these kinds of "clever" tricks > are usually avoided. A valid object with null content is often > preferrable, or a singleton style pattern. But occasionally your > style is needed, just be aware of the extra overhead you > introduce by using it. >
Side question: Any reason why you'd raise the exception from __new__ rather than __init__? If you want to return None, then yeah I can see why you'd have to use __new__, but would there be any reason you can't or shouldn't simply raise an exception from __init__? _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor