Nella namedtuple documentazione , si dice:
Any valid Python identifier may be used for a fieldname except for names starting with an underscore. Valid identifiers consist of letters, digits, and underscores but do not start with a digit or underscore and cannot be a keyword such as class, for, return, global, pass, print, or raise.
Perché namedtuple s ha una struttura di campo dinamica. Fornisci un elenco di identificatori e crea una classe con field s correlato.
Poiché ha un tipo di campo dinamico, gli sviluppatori cercano di evitare quante più condizioni possibili per rendere field_names flessibile. Hanno chiamato i metodi della classe base con un trattino basso, ( _make() , _replace() , _asdict() e _fields ) in modo da poter utilizzare nomi non sottolineati per i nomi dei campi o simili.
Nessun identificatore può iniziare con una cifra e nessun metodo di classe o proprietà o campo può avere il nome di una keyword in python come regola generale. Per quanto riguarda l'ultima regola di denominazione namedtuple field_name , i nomi che iniziano con un carattere di sottolineatura non sono disponibili poiché sono riservati per i nomi di metodi e proprietà della classe namedtuple .