2010-10-10 5 views
0

J'ai une série de classes que je vais enregistrer en tant que services à une classe d'abstraction de plus haut niveau. La classe de haut niveau aura une fonction qui obtient la classe de niveau inférieur basée sur init args, etc. Est-ce que cela sonne berserk? Aussi, comment s'appelle-t-il? Je l'appelle usine fonction/classe, mais je n'ai vraiment aucune idée (ce qui rend plus difficile pour les meilleures pratiques de Google).Python - question sur les fonctions d'usine

Répondre

2

C'est ce qu'on appelle la «programmation de la métaclasse». Dans les versions récentes de Python, il est implémenté en définissant la méthode statique __new__() et en renvoyant un objet du type approprié.

class C(object): 
    def __new__(cls, val): 
    if val == 5: 
     return 'five' 
    else: 
     return super(C, cls).__new__(cls) 

c1 = C(3) 
print c1 
c2 = C(5) 
print c2