Tutti i miei django-modelli hanno Unicode funzioni, al momento questi tendono ad essere scritto in questo modo:Django: Più Pythonic __unicode__
def __unicode__(self):
return u'Unit: %s -- %s * %f' % (self.name, self.base.name, self.mul)
Tuttavia, il codice come un Pythonista, a http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html#string-formatting ricorda che self.__dict__
è un dizionario, e come tale di cui sopra può essere semplificata per:
def __unicode__(self):
return u'Unit: %(name)s -- %(base.name)s * %(mul)f' % self.__dict__
Questo funziona, tranne che per il "base.name", perché python prova a guardare in alto self.__dict__['base.name']
che non riesce, mentre self.b ase.name funziona.
C'è un modo elegante per fare questo lavoro, anche se è necessario seguire stranieri-key-relazioni?
Eccellente! Perché questi due metodi di formattazione delle stringhe? Ci sono alcune situazioni in cui .format() non dovrebbe essere usato, o dovrei semplicemente cambiarlo per usarlo sempre per coerenza? – Agrajag
@Agrajag 'format' è stato aggiunto in 2.6, quindi l'unica ragione per usare la formattazione'% 'è se stai scrivendo codice per vecchi sistemi o se vuoi far apparire il tuo codice come C. – ecatmur