Pregunta Cómo evitar usar tanto el "yo" [duplicar]


Esta pregunta ya tiene una respuesta aquí:

Estoy escribiendo un programa para simular un pequeño sistema físico y cada vez me siento más molesto mientras escribo cosas como esta:

K = 0.5 * self.m * self.v**2

En el caso anterior, la ecuación es corta y bastante comprensible, pero tengo situaciones en las que hay tanto self que todo termina pareciendo un desastre. Soy consciente de que Python siempre requiere self para referirse a los miembros de la clase, pero ¿hay alguna manera de hacer que el código no se vea como un mosaico de self¿Es?

EDITAR: Suelo hacer cosas como:

var = self.var 

y sigue usando var en lugar de self.var. Más tarde lo hago:

self.var = var

pero esto parece realmente estúpido. ¿Cuál sería la forma pitónica de resolver este problema?


8
2018-02-16 18:43


origen


Respuestas:


Por partes desordenadas usaría Python módulos y "variables a nivel de módulo" en lugar de clases.


2
2018-02-16 20:31



Si todo lo que quiere hacer es guardar algunas teclas, siempre puede cambiar el nombre self a s:

class MyClass(object):
    def kinetic_energy(s): # use s instead of self for brevity
        return 0.5 * s.m * s.v**2

Esto le ahorra 3 caracteres por uso de self. Esto va en contra de la convención estándar, pero nada te impide hacer esto. Recomendaría no hacerlo en código general, pero podría estar justificado si hace que algunas fórmulas muy largas sean más legibles. Mencione la opción inusual en un comentario, en caso de que alguien más tenga que leer su código cuando ya se haya ido.


2
2018-02-16 20:46



Supongo que es posible usar magia negra en Python y crear un administrador de contexto, que tomará un objeto y colocará todos sus atributos en el contexto. locals(), y asignarlo a objeto en el __exit__ función.

Encontró esto https://code.google.com/p/ouspg/wiki/AnonymousBlocksInPython que puede ayudar.


0
2018-02-16 21:29