J'ai un extrait de code comme celui-ciComment remplacer les méthodes de classe interne si la classe interne est définie comme une propriété de la classe supérieure
class A(object):
class b:
def print_hello(self):
print "Hello world"
b = property(b)
Et je veux remplacer la classe intérieure b
(s'il vous plaît ne vous inquiétez pas le nom en minuscules). Dites, je veux ajouter une nouvelle méthode ou je souhaite modifier une méthode existante, comme:
class C(A):
class b(A.b):
def print_hello(self):
print "Inner Class: Hello world"
b = property(b)
Maintenant, si je crée l » objet C
comme c = C()
et appeler c.b
je reçois TypeError: 'property' object is not callable error
. Comment est-ce que je devrais passer ceci et appeler le print_hello
de la classe interne étendue? Disclaimer: Je ne veux pas changer le code pour la classe A
. Mise à jour: La classe de base 'A' essaie de simuler une classe que j'ai vue dans l'un des apis open-source. Donc c'est pourquoi je ne veux pas changer l'api de base, mais l'étendre pour ma propre exigence.
Comme le dit Evgeny, quels sont les appels à la propriété() censés faire? Avec votre code d'origine, vous ne pouvez même pas faire A(). B sans avoir d'erreur. Si vous deviez décrire ce que vous essayez d'accomplir au lieu de nous donner votre solution brisée qui pourrait vous aider. – Duncan