2010-08-13 6 views
3

j'ai deux classes, supposons que A et B. Dans B, j'instancier A.Accès à la même fonction de deux classes différentes

J'ai une fonction func() qui est requis par les deux classes.

Comment dois-je procéder? J'avais pensé à cette approche:

class A: 
    func() 

class B: 
    x = A() 
    func() 

def func(): 

Et puis je peux accéder à func() à partir de A ou B. Cette approche est OK ou est-il une meilleure façon de le faire (peut-être en utilisant une approche OO)

Notez que je suis nouveau à la programmation OO et c'est pourquoi je suis intéressé à savoir si je peux appliquer n'importe quel design OO à cela.

Éditer: La fonction peut différer dans les arguments qu'elle prend.

+0

double possible de [méthode d'appel d'une classe dans une autre classe en python] (http://stackoverflow.com/questions/3311987/calling -method-from-a-class-in-a-different-class-in-python) –

+0

Qu'est-ce que c'est avec cette syntaxe loufoque? Pourquoi appelez-vous une fonction dans une déclaration de classe? – rfw

Répondre

1

Définissez func avant de définir une classe et elle sera disponible pour les deux.

+0

Est-ce une bonne pratique en tant que telle? Ou c'est le résultat d'un mauvais design. – Chris

+0

Pour autant que je sache, c'est la façon la plus simple de le faire, et comme le dit le Zen de Python, «Simple est mieux que complexe.» –

+2

@Chris: Peut être bon, pourrait être mauvais. Cela dépend de ce qu'est func et de ce que sont les classes. En Python, les fonctions de niveau module comme celle-ci ne sont pas illégales comme en Java (bien que les gens Java aient plusieurs patterns qui fonctionnent autour), et les fonctions au niveau des modules sont assez utilisées dans les bibliothèques Python standard , par exemple. –

0

func ici peut me une méthode de classe de base commune

class Base(object): 
    def func(): 
     #... 
class A(Base): 
    #... 
class B(Base): 
    #... 
Questions connexes