On 8/24/2012 12:01 PM, Steven D'Aprano wrote:
That's not a use-case. A use-case is a real-world problem that you
are trying to solve. You have skipped the problem and jumped straight
to what you think is the solution: "create a subclass which can't be
instantiated directly".
I can't imagine any problem where the solution to the problem depends
on whether or not you instantiated a subclass using:
Spam(*args)
or
SpamMaker.make(*args)
Clearly my explanation was pretty bad. I'll start with my real-world
problem instead, although it may be outside the scope of this list (thus
my lame attempt to abstract it).
There are two classes of interest in GDAL - a Dataset which typically
describes a geospatial raster file and Band which described a single
band from the Dataset. gdal.Band just raises an AttributeError within
__init__, but a gdal.Band instance can be created using
gdal.Dataset.GetRasterBand(bandNum).
I had wanted to create additional methods on gdal.Band that would allow
some GIS type operations (e.g. overloading __add__), thus I thought I
would need a subclass of gdal.Band. So I was unsure of how to get an
instance of my subclass when the only way I knew how to create an
instance of the superclass (gdal.Band) was through the call to
GetRasterBand().
Does that make any sense in relation to my contrived example? In my
example, I didn't really want to create a Spam instance from the SubSpam
__new__, I just didn't know how to return a SubSpam instance that was
forced to go through SpamMaker.make_spam().
matt
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor