Fabrique de classe en Python

Je suis nouveau sur Python et besoin de quelques conseils de mise en œuvre le scénario ci-dessous.

J'ai deux classes pour la gestion de vos domaines à deux bureaux d'enregistrement. Les deux ont la même interface, par exemple

class RegistrarA(Object):
    def __init__(self, domain):
        self.domain = domain

    def lookup(self):
        ...

    def register(self, info):
        ...

et

class RegistrarB(object):
    def __init__(self, domain):
        self.domain = domain

    def lookup(self):
        ...

    def register(self, info):
        ...

Je voudrais créer un Domaine de classe, étant donné qu'un nom de domaine, les charges de la bonne greffier classe basée sur l'extension, par exemple

com = Domain('test.com') #load RegistrarA
com.lookup()

biz = Domain('test.biz') #load RegistrarB
biz.lookup()

Je sais que cela peut être accompli en utilisant une fonction de fabrication (voir ci-dessous), mais est-ce la meilleure façon de le faire, ou est-il une meilleure façon de la programmation orientée objet à l'aide de fonctionnalités?

def factory(domain):
  if ...:
    return RegistrarA(domain)
  else:
    return RegistrarB(domain)
InformationsquelleAutor | 2009-01-19