J'apprends python par moi-même. En ce moment j'essaye de coder un carnet d'adresses. J'ai lu que vous devriez utiliser une classe pour cela et je ne comprends pas pourquoi parce que vous pouvez définir toutes les fonctions que vous avez dans cette classe (comme insertaddress, deletaddres, ...) sans un et l'utiliser comme des fonctions normales. Ou ai-je tort?Importer ma classe et l'utiliser me donne une erreur
Mais pour obtenir un peu de pratique avec des classes i créé un:
class Addressbook():
def __init__(self,last,first,street,num,plz,place):
self.last=last
self.first=first
self.street=street
self.num=num
self.plz=plz
self.place=place
def insertadd(self):
text =self.last+" "+self.first+" "+self.street+"
"+self.num+" "+self.plz+" "+self.place+"\n"
with open("addressbook.txt", "a") as file:
file.write(text)
Dans mon principal fichier:
from klassen import Addressbook
k.last= input()
k.first=input()
(...)
k.place = input()
k.insertadd()
Mais quand j'importer ma classe via from klassen import Addressbook as k
et le lien entre les attributs de classe à mon entrée: k.first=input("text")
et essayez d'exécuter la fonction k.insertadd()
je reçois un message d'erreur.
NameError: name 'self' is not defined
Quand je donne ma fonction à chaque paramter j'ai comme entrée je reçois une erreur qui me dit que « lieu » est un paramter manquant.
Pourriez-vous s'il vous plaît aide-moi?
Bienvenue sur StackOverflow. Veuillez lire et suivre les consignes de publication dans la documentation d'aide. [Exemple minimal, complet, vérifiable] (http://stackoverflow.com/help/mcve) s'applique ici. Nous ne pouvons pas vous aider efficacement tant que vous n'afficherez pas votre code MCVE et que vous ne décrivez pas précisément le problème. Nous devrions pouvoir coller votre code posté dans un fichier texte et reproduire le problème que vous avez décrit. – Prune
Vous semblez avoir quelques malentendus sur le fonctionnement des classes. Il semble que vous essayez d'utiliser directement l'objet de classe pour stocker vos données. Ne fais pas ça. Vous devez créer une ou plusieurs instances de la classe. Et pour le moment, oubliez d'importer la classe Addressbook. Essayez de commencer par travailler dans un seul fichier de script. Une fois que tout fonctionne, vous pouvez le diviser en plusieurs fichiers, mais il n'y a probablement pas besoin de le faire, Python n'est pas Java. –
Mes codes d'amis en C++ et il m'a dit que je pourrais structurer mon code plus en créant des fichiers supplémentaires pour les classes et les fonctions. pour que ma main soit meilleure à lire. Voulez-vous dire pas de fichiers multiples pour les petits projets ou en général'? – Omikron