Wszystkie moje django-modele mają unicode funkcje, w tej chwili te wydają się być napisane tak:Django: Więcej pythonic __unicode__
def __unicode__(self):
return u'Unit: %s -- %s * %f' % (self.name, self.base.name, self.mul)
Jednak Kod Niczym Pythonista na http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html#string-formatting wskazuje, że self.__dict__
jest słownikiem i jako takie powyższego można uprościć do:
def __unicode__(self):
return u'Unit: %(name)s -- %(base.name)s * %(mul)f' % self.__dict__
to działa, z wyjątkiem „base.name”, bo python próbuje patrzeć self.__dict__['base.name']
który zawiedzie, a self.b ase.name działa.
Czy istnieje elegancki sposób na wykonanie tej pracy, nawet jeśli zachodzi potrzeba obcowania z kluczowymi związkami?
Doskonała! Dlaczego te dwie metody formatowania ciągów znaków? Czy są pewne sytuacje, w których nie należy używać formuły .format(), czy też powinienem zmienić tak, aby zawsze używać tego dla spójności? – Agrajag
@Agrajag 'format' został dodany w 2.6, więc jedynym powodem używania formatu'% 'jest pisanie kodu dla starych systemów lub jeśli chcesz, aby twój kod wyglądał jak C. – ecatmur