OVH Cloud OVH Cloud

suite d'Objets ...

2 réponses
Avatar
Herve G.
Bonjour !

J ai un petit probleme de definition de classe. Pour etre plus visuel,
considerons une classe Polygon qui admet comme variables d instance sommets,
centre (centre du polygone) ET antecedent ou antecedent est sense etre
justement un Polygon qui permet de definir le polygone actuel :

ce que je veux donc c est definir explicitement P[0] (un Polygon) , puis par
une methode implementer dans la classe Polygon, a partir de antecedent,
construire sommet et centre du polygon P[1] et etc..etc...

ainsi pour P[0] donc son antecedent serait le vide quoi ...

Bon alors mon probleme, c'est que dans la definition meme de Polygon, une
des variables d instance (antecedent) est sense etre aussi un Polygon, qui
n'est pas encore defini...

J avoue patauger un peu .... si quelqu'un m a compris et a une idee...

2 réponses

Avatar
Laurent Pointal
Bonjour !

J ai un petit probleme de definition de classe. Pour etre plus visuel,
considerons une classe Polygon qui admet comme variables d instance sommets,
centre (centre du polygone) ET antecedent ou antecedent est sense etre
justement un Polygon qui permet de definir le polygone actuel :

ce que je veux donc c est definir explicitement P[0] (un Polygon) , puis par
une methode implementer dans la classe Polygon, a partir de antecedent,
construire sommet et centre du polygon P[1] et etc..etc...

ainsi pour P[0] donc son antecedent serait le vide quoi ...

Bon alors mon probleme, c'est que dans la definition meme de Polygon, une
des variables d instance (antecedent) est sense etre aussi un Polygon, qui
n'est pas encore defini...


Un peu le problème du bootstrap.

Il faut fabriquer le premier polygone dans un cas particulier (pas
d'antécédent).

class Polygone (object):
def __init__(self,antecedent=None) :
self.sommets = []
self.centre = (None,None)
self.antecedent = antecedent
if antecedent : self.fabrique_sommets()

p0 = Polygone()
p0.sommets = [....]

p1 = Polygone(p0)
p2 = Polygone(p1)
...

[tu peux bien sûr faire une jolie méthode si tu as une façon connue de
fabriquer le premier polygone, ou encore faire un __init__ qui accepte
un second argument nommé - ou qui teste si le type de l'argument est
déjà un polygone - permettant de passer directement les sommets...]

J avoue patauger un peu .... si quelqu'un m a compris et a une idee...


C'est une idée, est-ce qu'elle répond à ton interrogation ?

Avatar
Herve G.
C est pas mal du tout ca, le coup du None !

par contre je ne comprends pas ce que tu dis dans

""" > [tu peux bien sûr faire une jolie méthode si tu as une façon connue de
fabriquer le premier polygone, ou encore faire un __init__ qui accepte
un second argument nommé - ou qui teste si le type de l'argument est
déjà un polygone - permettant de passer directement les sommets...]
"""

....

"Laurent Pointal" wrote in message
news:du196p$bt3$
Bonjour !

J ai un petit probleme de definition de classe. Pour etre plus visuel,
considerons une classe Polygon qui admet comme variables d instance
sommets,
centre (centre du polygone) ET antecedent ou antecedent est sense etre
justement un Polygon qui permet de definir le polygone actuel :

ce que je veux donc c est definir explicitement P[0] (un Polygon) , puis
par
une methode implementer dans la classe Polygon, a partir de antecedent,
construire sommet et centre du polygon P[1] et etc..etc...

ainsi pour P[0] donc son antecedent serait le vide quoi ...

Bon alors mon probleme, c'est que dans la definition meme de Polygon, une
des variables d instance (antecedent) est sense etre aussi un Polygon,
qui
n'est pas encore defini...


Un peu le problème du bootstrap.

Il faut fabriquer le premier polygone dans un cas particulier (pas
d'antécédent).

class Polygone (object):
def __init__(self,antecedent=None) :
self.sommets = []
self.centre = (None,None)
self.antecedent = antecedent
if antecedent : self.fabrique_sommets()

p0 = Polygone()
p0.sommets = [....]

p1 = Polygone(p0)
p2 = Polygone(p1)
...

[tu peux bien sûr faire une jolie méthode si tu as une façon connue de
fabriquer le premier polygone, ou encore faire un __init__ qui accepte
un second argument nommé - ou qui teste si le type de l'argument est
déjà un polygone - permettant de passer directement les sommets...]

J avoue patauger un peu .... si quelqu'un m a compris et a une idee...


C'est une idée, est-ce qu'elle répond à ton interrogation ?