Écrivons la classe __str__ plus facilement en utilisant lambda!

Bonjour fan de lambda vous ne savez pas avoir grand chose dans le Pythonista! Eh bien, je pense que vous utilisez __str__ ou __unicode__ pour afficher le nom de la classe. Plus précisément, je pense que nous faisons la déclaration de classe suivante.

python



class NotLambda(object):

    name = u'not lambda'

    def __str__(self):
        return '<%s>' % self.name

Mais ne pensez-vous pas que cette déclaration est un peu redondante? Surtout def --return. Probablement, dans la plupart des cas, il s'agit d'une déclaration selon laquelle une seule ligne suffit.

Donc, au fait, lambda était pratique pour une telle déclaration. En utilisant lambda, vous pouvez écrire comme ci-dessous.

python


class UseLambda(object):

    name = u'lambda'
    __str__ = lambda self: '<%s>' % self.name

Je pense que lambda a le comportement suivant lorsqu'il est converti en def.

python


def not_lambda(hoge):
    return hoge + 1

test_def = not_lambda
print test_def(1)

En d'autres termes, en créant une fonction et en la connectant à cette variable, vous pouvez utiliser cette variable comme une fonction. Si vous le changez en lambda, ce sera ci-dessous.

python


test_lambda = lambda hoge: hoge + 1
print test_lambda(1)

Ainsi, __str__ pourrait être défini en lambda. Pour être honnête, ça fait mal :).

Recommended Posts

Écrivons la classe __str__ plus facilement en utilisant lambda!
Écrivez facilement if-elif avec lambda
Créons facilement un gif mathématique en utilisant Google Colaboratory