web-dev-qa-db-fra.com

AttributeError: l'objet 'NoneType' n'a pas d'attribut 'format'

print ("Hello World")
print ("{} World").format(Hello)

Je travaille sur mon premier programme "Hello World" et je peux le faire fonctionner en utilisant la fonction d'impression et juste un simple texte de chaîne mais quand j'essaie d'utiliser .format cela me donne l'erreur:

AttributeError: 'NoneType' object has no attribute 'format' 

Est-ce à dire que je dois initialiser une variable pour .format ou ai-je raté quelque chose?

13
MonotonousSonder

Vos crochets sont faux

print("Hello World")
print("{} World".format('Hello')) 

Remarque - les erreurs

  • La fonction format est un attribut de str donc elle doit être appelée sur la chaîne
  • Sauf si déclaré, Hello est une chaîne et doit être 'Hello'

Pour Py2, vous pouvez faire

print "{} World".format('Hello') 
30
Bhargav Rao

La fonction print renvoie None, c'est donc évidemment ce que vous obtenez dès le début de votre deuxième instruction, à savoir

print ("{} World")

Sur cette valeur de retour de None, vous appelez ensuite .format(Hello) - même si une variable nommée Hello a été affectée quelque part dans votre code (et que vous ne la montrez pas à nous!), vous appelez cette méthode .format sur None renvoyé par votre appel print, ce qui n'a aucun sens.

Au contraire, vous voulez appeler .format Sur la chaîne"{} World" - donc la parenthèse fermée juste après la chaîne et avant le point est clairement une terrible erreur! Déplacez ce ) À la fin de l'instruction, après l'appel à format sur cette chaîne.

De plus, estHello le nom d'une variable dont vous souhaitez formater la valeur? J'espère bien que non, sinon pourquoi ne nous avez-vous pas montré cette variable assignée?! Je soupçonne que vous voulez formater une chaîne constante et que vous avez oublié de façon distraite mettez-la entre guillemets (pour montrer que c'est une constante, pas le nom d'une variable!) - - 'Hello', pasHello sans guillemets! C'est ce que vous devez transmettre à la forme appropriée de l'appel .format ...!

1
Alex Martelli