CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : Problème python

DébutPage précedente
1
Page suivantePage suivante
gay2province gay2province
MP
Niveau 10
30 mai 2016 à 18:39:22

Salut !

Je suis débutant en Python donc j'ai un peu de mal avec la POO. J'utilise le module Image (from PIL import Image)
Je veux créer une classe B (FractalImage)qui hérite de la classe A (Image.Image). Le problème c'est qu'il y a une fonction (Image.open)dans le module que j'ai importé (Image) qui renvoie des objets de classe Image.Image indispensable.
Si je fais im = Image.open("img.jpg") par exemple, j'ai accès à toutes les méthodes de Image.Image et non celles de FractalImage.

C'est là que je bloque. Merci.

Grimmys Grimmys
MP
Niveau 10
30 mai 2016 à 18:47:50

Salut,

Je ne connais pas du tout ce module, et du coup j'ai du mal à comprendre la situation comme ça... Hors contexte c'est compliqué... :hap:

Mais en gros, ton problème, c'est un conflit entre deux méthodes de deux modules différents qui possèdent le même nom, non ? :(

Deux méthodes open() ? :(

J'ai du mal à saisir, car si B hérite de A, alors B possède toutes les méthodes de A, mais aussi celles que tu lui as donné... Si tu redéfinies une méthode de A, celle-ci sera " écrasée "....

Grimmys Grimmys
MP
Niveau 10
30 mai 2016 à 18:50:59

Ahhh non c'est bon je crois je viens de comprendre, excuse moi... M'a fallu relire plusieurs fois. :hap:

Hé bien, il suffit de faire im = Fractallmage("img.jpg")

Tu passes ainsi ton paramètre à l'initialisateur de ton objet, après suffit d'appeler la dite fonction Image.open() dans l'initialisateur de l'objet. :)

gay2province gay2province
MP
Niveau 10
30 mai 2016 à 19:12:18

Merci beaucoup.

Avec

def __init__(self, imagelocation):
   self = Image.open(imagelocation)

je peux bien faire :

frac = FractalImage("../unnamed.png")

Malheureusement quand je tape frac j'ai une réponse bizarre :

>>> frac
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.4/dist-packages/PIL/Image.py", line 608, in __repr__
    self.mode, self.size[0], self.size[1],
  File "/usr/local/lib/python3.4/dist-packages/PIL/Image.py", line 632, in __getattr__
    raise AttributeError(name)
AttributeError: mode

Faut que je me documente sur la POO. J'en ai pas spécifiquement besoin mais pour des soucis esthétiques je préfère l'utiliser. :hap:

Grimmys Grimmys
MP
Niveau 10
30 mai 2016 à 19:23:17

Ouai, t'utilises pas la bonne méthode.

En fait, toi, tu redéfinis carrément self :

self = Image.open(blabla)

Ça ne se fait pas en Python... Absolument jamais... En gros, tu viens de transformer ton objet Fractallmage... En l'objet que renvoie Image.open(blabla).

Tu comprends ce que je veux dire ?
self c'est l'instance de ton objet... Donc si tu fais par exemple self = 6... Hé bien tu transformes l'instance de ton objet en instance de 6... :/

En fait, il faut que tu fasses self.attribut = Image.open(blabla)

Et pour avoir accès au bordel renvoyé, tu utilises self.attribut. :ok:

BeslSmasher BeslSmasher
MP
Niveau 10
30 mai 2016 à 23:39:37

Les namespaces aussi c'est utile pour pas tout mélanger.

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : HypoBowling
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment