IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Probleme POO string


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 33
    Par défaut Probleme POO string
    Bonjour,

    je cherche désespérément la solution a mon problème, je ne comprends pas ou est l'erreur


    code erreur : File "interface.py", line 277, in get_select_category. LA LIGNE 277 = ligne 22 du deuxième code
    select.select_food(get_index.get_category_food())
    AttributeError: 'str' object has no attribute 'get_category_food'

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    import mysql.connector
    from Constant import *
     
     
     
    class mysql_select:
     
     
    	def select_category(self):
    		connexion_data_base = mysql.connector.connect(user=MYSQL_USER, password=MYSQL_PWD, host=MYSQL_HOST, database=MYSQL_DATABASE)
    		cursor = connexion_data_base.cursor()
    		cursor.execute("SELECT category FROM Category")
    		self.data_category = cursor.fetchall()
    		self.data_category = [d[0] for d in self.data_category] 
    		return self.data_category
     
    	def select_food(self, idCategory):
    		connexion_data_base = mysql.connector.connect(user=MYSQL_USER, password=MYSQL_PWD, host=MYSQL_HOST, database=MYSQL_DATABASE)
    		cursor = connexion_data_base.cursor()
    		cursor.execute("SELECT food FROM Food WHERE idCategory ="+idCategory)
    		self.data_food = cursor.fetchall()
    		self.data_food = [d[0] for d in self.data_food]
    		return self.data_food
     
    	def select_substitute(self, idCategory):
    		cursor.execute("SELECT substitute FROM Substitute WHERE idCategory="+idCategory)
    		self.data_susbstitute = cursor.fetchall()
    		self.data_susbstitute = [d[0] for d in self.data_susbstitute]
    		return self.data_susbstitute


    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
     
     
    from tkinter import Button, Canvas, RIGHT, LEFT, PhotoImage, Label, N, S, E, W
    import tkinter as tk
    from tkinter import ttk
    from tkinter.ttk import Combobox
    import mysql.connector
    from Constant import *
    from SelectMysql import mysql_select
     
    select = mysql_select()
     
    class tkinterWindow:
    #..... j'ai retiré volontairement cette partie de mon code car je ne pense pas que le problème soit la
     
    	def get_select_category():
    		global comboExample
    		get_index = comboExample.current()
    		get_index = get_index + 1
    		get_index = str(get_index)
    		select.select_food(get_index.get_category_food())
    		select.select_substitute(get_index.get_category_food())
     
    	def get_category_food():
    		comboExample1 = ttk.Combobox(second_window, values=select.select_food(), width=30)
    		comboExample1.grid(row=2, column=1)
    		comboExample2 = ttk.Combobox(second_window, values=select.select_substitute(), width=30)
    		comboExample2.grid(row=0, column=6)
     
     
    	if __name__ == "__main__":
     
    		global comboExample
    		# creation window
    		window = tk.Tk()
    		# format window
    		window.title("Database OpenFoodFact")
    		window.geometry("950x400")
    		# creation title
    		label_title = Label(window, text="Bienvenue dans la base de donnée OpenFoodFacts", font=("Helvetica", 40), fg="#41B77F").pack()
    		# creation image
    		width = 300
    		height = 300
    		image = PhotoImage(file="/Users/macbookair/Documents/GitHub/PureBeurre/PureBeurre/openfoodfacts-logo-fr-178x150.png")
    		canvas = Canvas(window, width=width, height=height)
    		canvas.create_image(width/2, height/2, image=image)
    		canvas.pack()
    		# creation button
    		button_connect = tk.Button(window, text="Trouver un aliment à remplacer", command=window.destroy).pack(side=LEFT, padx=100)
    		button_connect2 = tk.Button(window, text="Retrouver mes aliments substitués", command=substitute_food).pack(side=RIGHT, padx=100)
    		# print window
    		window.mainloop()
    		second_window = tk.Tk()
    		second_window.configure(bg="#CECECE")
    		second_window.geometry("950x650")
     
    		labelCategory = tk.Label(second_window, text="Catégories : ", relief="solid", bg="#FEFEFE").grid(row=0, column=0)
    		comboExample = ttk.Combobox(second_window, values=select.select_category(), width=30)
    		comboExample.grid(row=0, column=1)
    		button_choice_category = Button(second_window, text="Valider", command=get_select_category).grid(row=1, column=1)
    		button_choice_food = Button(second_window, text="Valider", command=get_ingredients).grid(row=3, column=1)
    		button_choice_subsitute = tk.Button(second_window, text="Valider", command=get_substitute).grid(row=1, column=6)
    		labelFood = tk.Label(second_window, text="Aliments : ", relief="solid", bg="#FEFEFE").grid(row=2, column=0)
    		label_subsitute = tk.Label(second_window, text="Aliments à substituer :", relief="solid", bg="#FEFEFE").grid(row=0, column=5)
    		button_subsitute_food = tk.Button(second_window, text="Substituer aliment", command=saved_substitute, bg="#FAFAFA").grid(row=29, column=5, sticky="w")
    		button_subsitute = tk.Button(second_window, text="Historique", command=substitute_food, bg="#FAFAFA").grid(row=29, column=6, sticky="e")
    		space = tk.Label(second_window, text="            ", bg="#CECECE"). grid(row=0, column=4)
    		second_window.mainloop()

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 714
    Par défaut
    Salut,

    Si vous écrivez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                    get_index = str(get_index)
    		select.select_food(get_index.get_category_food())
    et que vous ne comprenez pas l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select.select_food(get_index.get_category_food())
    AttributeError: 'str' object has no attribute 'get_category_food'
    pas grand monde pourra faire quelque chose pour vous sinon vous suggérer de passer du temps avec un tuto. pour apprendre les bases de la programmation.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 33
    Par défaut
    Merci pour ta réponse même si tu as un ton condescendant ... malheureusement je n'ai pas encore ton expérience, et je n'ai jamais été confronté a cette erreur donc je cherche mais sans trouver de solution, et je vois bien que l'erreur est stupide, mais je n'y arrive toujours pas.

    Donc si quelqu'un peut m'orienter ça me serait d'une grande aide

    merci d'avance

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 714
    Par défaut
    Salut,

    Citation Envoyé par mac79 Voir le message
    je n'ai jamais été confronté a cette erreur donc je cherche mais sans trouver de solution, et je vois bien que l'erreur est stupide, mais je n'y arrive toujours pas.
    Vous n'êtes pas en train d'essayer de faire un des exercices proposé par un tuto mais vous cherchez à réaliser du vrai code où vous avez écrit une méthode/fonction que vous ne savez pas utiliser (çà c'est les bases qu'on doit apprendre dans un tuto avant de poster).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 33
    Par défaut
    Tous ne s'apprend pas avec des tutos , il faut bien pratiquer aussi ...

    Bref si vous avez un lien d'un tutoriel qui renvoie vers ce que je recherche merci d'avance

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 714
    Par défaut
    Citation Envoyé par mac79 Voir le message
    Tous ne s'apprend pas avec des tutos , il faut bien pratiquer aussi ...

    Bref si vous avez un lien d'un tutoriel qui renvoie vers ce que je recherche merci d'avance
    Dans votre tuto préféré, vous avez certainement un chapitre qui parle des fonctions et un autre qui parle de POO avec Python. Mes tutos. préférés sont le Swinnen et celui qui vient avec Python.

    Les tutos proposent des exercices (et certains sont corrigés) la première pratique du langage sera celle que vous allez acquérir en essayant de faire les exercices proposés. Çà prend du temps, mais à vous de vous donner les moyens de vos ambitions.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 827
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par mac79 Voir le message
    malheureusement je n'ai pas encore ton expérience, et je n'ai jamais été confronté a cette erreur donc je cherche mais sans trouver de solution, et je vois bien que l'erreur est stupide, mais je n'y arrive toujours pas.
    En écrivant get_index=str(get_index), tu as convertit ce truc (quel qu'il soit) en string de base Python. Un peu comme si tu avais écrit get_index="toto".
    Or une string de base Python n'a pas de méthode nommée "get_category_food".

    Citation Envoyé par mac79 Voir le message
    Donc si quelqu'un peut m'orienter ça me serait d'une grande aide
    En admettant que le "get_index" d'origine est bien un objet qui contient la méthode "get_category_food", évite de le perdre (donc d'écrire get_index=quoi_que_ce_soit).
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 059
    Par défaut
    Bonsoir,

    Peut-être que vous vous doutiez que cet attribut n'est pas lié à l'objet python str, car vous aviez cette erreur AttributeError et que cette méthode est créée pour vos besoins.

    Vous avez plusieurs lectures à faire, à savoir

    Déterminer ce qu'est un attribut.
    Quelle différence entre attribut et méthode ?
    La notion d'instance de classe.
    Comment appeler une méthode à partir d'une instance créée.

    Tout cela est lié à des termes de POO (Programmation Orienté Objets) et si vous en avez déjà entendu parler, c'est qu'il y a sans doute beaucoup à en dire et... à lire.

    C'est pas impossible... mais faut du temps ! Car votre interpréteur python, va cracher ces termes à longueur de temps... et pour débugger rapidement vos erreurs, vous devez les connaître et les comprendre.

Discussions similaires

  1. Probleme de string
    Par reventlov dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/03/2006, 17h50
  2. [debutant] probleme de string
    Par lamoueste dans le forum Langage
    Réponses: 3
    Dernier message: 22/02/2006, 11h35
  3. [RegEx]Probleme avec String.split
    Par sebastieng dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 09/02/2006, 21h24
  4. probleme capacité string
    Par jmjmjm dans le forum Langage
    Réponses: 5
    Dernier message: 06/01/2006, 15h38
  5. [Struts][logic:iterate] Probleme avec String
    Par julienOriano dans le forum Struts 1
    Réponses: 7
    Dernier message: 15/06/2004, 09h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo