Bonjour a tous, avant de poser ma question, je pense qu'il est important de souligner le fait que je debute en python.
Je me pose des questions sur facon dont est geree l'overriding de methodes en python.
Voila mon code :
Sauf erreur de ma part, dans la meme situation en C++, c'est la methode la plus specialisee qui est appeler.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 class FSItem: #element file system def __init__(self): self.__initSize() def __initSize(self): raise NotImplementedError class DirItem(FSItem): #Specialisation d'un element 'file system' : les repertoires def __init__(self): FSItem.__init__(self) def __initSize(self): self.__size = 1 #instanciation d'un objet repertoire dir = DirItem() -> NotImplementedError //Exception
Visiblement ce n'est pas le cas ici, python ne va pas chercher la methode __initSize() implementee dans la classe fille (DirItem).
Question 1: Ai-je bien tout compris jusqu'ici ?
Question 2: N'est il pas possible de faire comprendre a python que j'aimerai bien qu'il aille chercher l'implementation de la methode de la classe fille ?
Le but, et vous l'aurez comrpis, c'est d'eviter d'appeler __initSize() dans les constructeurs de toutes les classes qui vont heriter de FSItem.
Merci d'avance pour vos lumieres.
---
Le sage ne dit pas ce qu'il sait, l'idiot ne sait pas ce qu'il dit
Partager