On Thu, 2007-03-15 at 00:09 +1100, Edward d'Auvergne wrote:
> On 3/14/07, Chris MacRaild <[EMAIL PROTECTED]> wrote:
> > On Tue, 2007-03-13 at 19:51 +1100, Edward d'Auvergne wrote:
> > > Gary,
> > >
> > > I've written some unit tests which are located in the file
> > > 'test_suite/unit_tests/data/__init__.py'.  Would you know what
> > > modifications I need to apply to make these tests run?  These tests
> > > are for the methods of the Data singleton class (the relax data
> > > storage object) which is located in 'data/__init__.py'.  I haven't
> > > used the statement 'from x import Data' for this class so it is the
> > > legal and ubiquitous usage of an __init__.py file.  Would
> > > 'unit_test_runner.py' handle this code?
> > >
> > > Thanks,
> > >
> > > Edward
> > >
> > >
> > > P.S.  These tests demonstrate the utility of subclassing the singleton
> > > and is one reason I was arguing for the use of the class import rather
> > > than reference import.
> > >
> >
> > It is of course correct that the Singleton implimentation I proposed
> > does not allow for subclassing. This however might well be seen as a
> > design feature, given the well known conceptual problems with
> > subclassing Singleton. Essentially, subclassing violates the Singleton
> > Design Pattern:
> >
> > class Singleton:
> >     def __new__(self):
> >         ...
> >
> > class Sub(Singleton): pass
> >
> > >>> a = Singleton()
> > >>> b = Sub()
> > >>> isinstance(a,Singleton)
> > True
> > >>> isinstance(b,Singleton)
> > True
> > >>> a is b
> > False
> > >>> a == b
> > False
> >
> > ie. we have 2 instances of Singleton that are not the same thing, and
> > not even equal! If this is the behaviour you want, then you need
> > something other than Singleton. On the other hand, if you really want
> > Singleton, then you can't also hope for subclassability.
> 
> Actually one is an instance of Singleton and the other is an instance
> of Sub.  

The definition of inheritance is that an instance of the subclass is
also an instance of the parent class. ie. b is an instance of both Sub
and Singleton. Inheritance from a Singleton class is therefore a logical
contradiction.

My vote is for B


Chris


_______________________________________________
relax (http://nmr-relax.com)

This is the relax-devel mailing list
[email protected]

To unsubscribe from this list, get a password
reminder, or change your subscription options,
visit the list information page at
https://mail.gna.org/listinfo/relax-devel

Reply via email to