Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Probleme de classes (array)

16 réponses
Avatar
ian
Hello,

J'arrive de delphi et j'ai une question ...

J'aimerais faire un array de classes, a la delphi, pour stocker plusieurs
variables / classes.

Si j'arrive bien a en creer et a ajouter, je n'arrive pas par contre a
effacer...

class trial:
tmp=0
def func(self,x):
self.tmp=x
self.plop=x+10


arr=[]
for i in range(0,5):
inst=trial() #instance of trial class
arr.append(inst)
arr[i].func(i)



Il y a pas plus simple ? a la delphi ?

Style : je declare :

obj.create...
obj.x -> integer
obj.y -> string

...

mobj := mobj
add(mobj)
mobj(index).x := 2
mobj(index).y := "hello"


....

mobj(2).delete (on efface le 2eme de la liste)

mobj.clear (on vide toute la liste)...


bref vous voyez ce que je veux dire ... car la ca fait 1 heure que je
cherche sur google, je dois pas chercher comme il faut :(

Merci

10 réponses

1 2
Avatar
Laurent Pointal
Hello,

J'arrive de delphi et j'ai une question ...

J'aimerais faire un array de classes, a la delphi, pour stocker plusieurs
variables / classes.

Si j'arrive bien a en creer et a ajouter, je n'arrive pas par contre a
effacer...


[zip]

Il y a pas plus simple ? a la delphi ?


[zip]

mobj(2).delete (on efface le 2eme de la liste)


del arr[2] # Ca efface le 3ème (index zéro-basés)

mobj.clear (on vide toute la liste)...


del arr[:]

Ou en créant une nouvelle liste:

arr = []

La création d'une nouvelle liste peut être problématique si tu as
importé ton 'arr' dans un autre module (car ça crée un nouvel objet dans
le module courant... qui deviens indépendant de celui de l'autre module).
Cf http://wikipython.flibuste.net/moin.py/QuestionsGenerales


bref vous voyez ce que je veux dire ... car la ca fait 1 heure que je
cherche sur google, je dois pas chercher comme il faut :(


Sûrement :-)

Avatar
ian
Ok merci j'ai pu effacer...

Est-ce que tu connais un site qui detaille ca ? la facon propre de creer,
d'utiliser etcetc

Par exemple pour connaitre le nombre d'elements dans une liste ...

j'ai donc fait ca (pour test) :

class trial:
tmp=0
def func(self,x):
self.tmp=x

arr=[]
for i in range(0,5):
inst=trial()
arr.append(inst)
arr[i].func(i)

del arr[2]

for i in range(0,5):
print 'arr[%d].tmp = %d'%(i,arr[i].tmp)


evidemment ca plante vu que j'en ai efface 1...

Merci encore (reponse rapide :p)
Avatar
William Dode
On 05-10-2006, ian wrote:
Ok merci j'ai pu effacer...

Est-ce que tu connais un site qui detaille ca ? la facon propre de creer,
d'utiliser etcetc

Par exemple pour connaitre le nombre d'elements dans une liste ...

j'ai donc fait ca (pour test) :

class trial:
tmp=0
def func(self,x):
self.tmp=x

arr=[]
for i in range(0,5):
inst=trial()
arr.append(inst)
arr[i].func(i)

del arr[2]

for i in range(0,5):
print 'arr[%d].tmp = %d'%(i,arr[i].tmp)


for i in range(len(arr))

ou encore mieux
for i in arr

ou
for i, a in enumerate(arr)



evidemment ca plante vu que j'en ai efface 1...

Merci encore (reponse rapide :p)





--
William Dodé - http://flibuste.net

Avatar
Laurent Pointal
Ok merci j'ai pu effacer...

Est-ce que tu connais un site qui detaille ca ? la facon propre de creer,
d'utiliser etcetc


Pour qq chose de verbeux, y'a les docs Python, les intros, etc.
http://www.python.org/doc/
http://www.python.org/doc/faq/


Pour une référence rapide, y'a celle de R.Gruet ainsi que ma PQRC:
http://rgruet.free.fr/
http://www.limsi.fr/Individu/pointal/python/pqrc/

Par exemple pour connaitre le nombre d'elements dans une liste ...


len(laliste)

Que tu peux généraliser en python, len(monset), len(machaine),
len(mondictionnaire), etc...(n'importe quelle classe peut définir
l'opérateur correspodant).


<pub>
Ma page de liens Python:
http://www.limsi.fr/Individu/pointal/python.html#liens

Tu y trouveras divers liens vers des tutoriels Python, des docs, etc...
</pub>

A+

Laurent.

Avatar
Jerome
ian wrote:
Ok merci j'ai pu effacer...

Est-ce que tu connais un site qui detaille ca ? la facon propre de creer,
d'utiliser etcetc

Par exemple pour connaitre le nombre d'elements dans une liste ...




www.python.org/doc ...

len(l) pour la longueur

Avatar
ian
Ok merci a tous... j'ai des sites a lire (sauf la doc de python que j'ai du
mal a digerer).

C'est sympa python, mais quand on vient d'ailleurs, on a du mal ... :)

Sinon, les variables permissives, c'est pas top non plus ... y'a un autre
moyen de les declarer ?
style:

x: integer ?
je sais je peux la forcer en faisant x=0 mais bon ...


a+
Avatar
Jerome
ian wrote:
Ok merci a tous... j'ai des sites a lire (sauf la doc de python que j'ai du
mal a digerer).

C'est sympa python, mais quand on vient d'ailleurs, on a du mal ... :)


oui, on a du mal à repartir ailleurs :)


Sinon, les variables permissives, c'est pas top non plus ...


Question de point de vue, si le développeur sait ce qu'il fait c'est
plutôt pratique

y'a un autre
moyen de les declarer ?
style:

x: integer ?
je sais je peux la forcer en faisant x=0 mais bon ...


Tu ne forces pas le type en faisant ça, tu peux très bien faire x=0 et
x='toto' juste après



a+




Avatar
Bruno Desthuilliers
ian wrote:
Ok merci a tous... j'ai des sites a lire (sauf la doc de python que j'ai du
mal a digerer).

C'est sympa python, mais quand on vient d'ailleurs, on a du mal ... :)


La difficulté est surtout d'arrêter de penser dans un autre langage
qu'on connait mieux. Et c'est vrai quelques soient les langages. Tant
que tu continueras à essayer de faire entrer de force les idiomes
ObjectPascal dans Python, tu va avoir mal.

Sinon, les variables permissives, c'est pas top non plus ...


s/variables permissives/typage dynamique/

Là aussi, c'est une question de "réajustement". En Python, une
"variable", c'est juste un nom associé à un objet dans un espace de
nommage. Les informations de type, c'est l'objet qui les détient, pas le
nom.

Quant à la permissivité, rien à voir avec Perl ou PHP - ou même avec le
C. Essaye donc d'additionner un entier et une chaine....

Le typage dynamique n'est certes pas une panacée, mais dans la pratique,
et particulièrement en programmation OO ou fonctionnelle, ça permet de
rendre le code beaucoup plus simple et plus générique. Globalement, ça
évite plus de bugs que ça n'en induit.

y'a un autre
moyen de les declarer ?
style:

x: integer ?


Pourquoi faire ?

je sais je peux la forcer en faisant x=0 mais bon ...


Ca ne "force" rien - ça crée le nom 'x' dans l'espace de nommage
courant, et ça y associe un objet de type int et de valeur 0.

--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in ''.split('@')])"

Avatar
MC
Bonsoir !

Quand on a goûté, et apprécié, le typage dynamique, on plaint les
développeurs qui doivent utiliser des langages statiquement typés
(comme, au hasard, windev...)

On est d'accord, n'est-ce pas ?

--
@-salutations

Michel Claveau
Avatar
Bruno Desthuilliers
Bonsoir !

Quand on a goûté, et apprécié, le typage dynamique, on plaint les
développeurs qui doivent utiliser des langages statiquement typés


Il y a des systèmes de typage statique fort qui permettent de conserver
une généricité presque équivalente (voire dans certains cas supérieure)
aux typages dynamiques, sans imposer toutes les restrictions arbitraires
et le boiler-plate des typages statiques déclaratifs "traditionnels".
Fait une recherche sur "inférence de type", et/ou regarde du côté de
OCaml et Haskell.

(comme, au hasard, windev...)


Pas de gros mots s'il te plait, c'est pas encore vendredi.

On est d'accord, n'est-ce pas ?

<troll>

Tiens, ça me rappelle que dans Windev 5.5, les variables étaient typées,
mais pas les arguments des fonctions... no comment.
</troll>

1 2