Design pattern question
Thomas Jensen
spam at ob_scure.dk
Wed Aug 21 15:57:57 EDT 2002
Hi,
Karl Schmid wrote:
> Now I would like to instantiate the abstract class, but to obtain an
> instance of either the Cap3Assembler or PhrapAssembler class depending on
> the assembler_type variable.
>
>
>>>>assembler = SequenceAssembler(assembler_type)
>>>
>
> Is this possible?
>
This code prints 1, 1 and 0:
--- code begin ---
class SequenceAssembler:
def __init__(self,assembler_type):
if assembler_type == 'cap3':
self.__class__ = Cap3Assembler
elif assembler_type == 'phrap':
self.__class__ = PhrapAssembler
else:
raise Exception('illigal assembler_type %s' % repr(assembler_type))
def save_sequences():
pass
class Cap3Assembler(SequenceAssembler):
def run_assembler(self):
print 'Cap3Assembler.run()'
class PhrapAssembler(SequenceAssembler):
def run_assembler(self):
print 'PhrapAssembler.run()'
sa = SequenceAssembler('cap3')
print isinstance(sa, SequenceAssembler)
print isinstance(sa, Cap3Assembler)
print isinstance(sa, PhrapAssembler)
--- code end ---
I don't think this is recommended practice, but I was unable to find any
documents saying this is forbidden or will go away in a future release.
(Maybe I didn't look hard enough though ;-)
--
Best Regards
Thomas Jensen
(remove underscore in email address to mail me)
More information about the Python-list
mailing list