CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • 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 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Problème python

gay2province
gay2province
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
Niveau 19
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
Niveau 19
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
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
Niveau 19
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
Niveau 10
30 mai 2016 à 23:39:37

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

Sous forums
  • Métiers & Orientation
  • Histoire
  • Cours et Devoirs
  • Politique
  • Environnement & Nature
  • Philosophie
La vidéo du moment