2017-09-28 4 views
0

J'ai un programme python avec beaucoup de texte que je veux aligner et .format semblait désordre, donc je prévu d'utiliser .center(shutil.get_terminal_size().columns) à l'extrémité d'un print comme ceci:Alignement de chaînes simplifié avec une fonction?

import shutil 
print("Hello world!".center(shutil.get_terminal_size().columns)) 

et devrait être retouné centré dans ma console , et c'est.

Cependant, si je veux simplifier cela en une seule fonction:

def align_center(): 
    center(shutil.get_terminal_size().columns) 

et l'ajouter à la fin d'une impression auj:

print("Hello World!".align_center()) 

(je l'ai aussi essayé sans les parenthèses à la fin de .align_center)

il retourne:

AttributeError: 'str' object has no attribute 'align_center' 

Je suis sûr que je l'ai eu fonctionnait correctement plus tôt mais j'ai changé quelque chose et il s'est arrêté, Suis-je fou et cette simplification via une fonction n'est pas possible? Est-ce que je l'applique mal?

Répondre

2

Je ne pense pas que vous l'ayez jamais fonctionné si vous l'avez simplement ajouté à la chaîne. Cela en ferait un atrribute et l'objet str est peu susceptible d'avoir un attribut qui correspond au nom d'une méthode arbitraire que vous avez créée.

Cela peut aider: passez la chaîne à la méthode et renvoyez-la formatée. Quelque chose comme ceci:

def align_center(s): 
    return s.center(shutil.get_terminal_size().columns) 

alors:

print(align_center(s)) 
+0

Vous avez oublié de '' return' dans align_center'. – ShadowRanger

+0

@ShadowRanger: bonne prise. Fixé –