clases PHP puede utilizar la palabra clave "auto" en un contexto estático, como esto:En Python, ¿cómo hago referencia a una clase genéricamente de forma estática, como la palabra clave "self" de PHP?
<?php
class Test {
public static $myvar = 'a';
public static function t() {
echo self::$myvar; // Generically reference the current class.
echo Test::$myvar; // Same thing, but not generic.
}
}
?>
Es obvio que no se puede utilizar "auto" de esta manera en Python porque "auto" no se refiere a una clase, pero a una instancia. Entonces, ¿hay alguna forma de que pueda hacer referencia a la clase actual en un contexto estático en Python, similar al "self" de PHP?
Supongo que lo que estoy tratando de hacer es bastante antipático. Aunque no estoy seguro, soy nuevo en Python. Aquí está mi código (usando el marco Django):
class Friendship(models.Model):
def addfriend(self, friend):
"""does some stuff"""
@staticmethod # declared "staticmethod", not "classmethod"
def user_addfriend(user, friend): # static version of above method
userf = Friendship(user=user) # creating instance of the current class
userf.addfriend(friend) # calls above method
# later ....
Friendship.user_addfriend(u, f) # works
Mi código funciona como se esperaba. Solo quería saber: ¿hay alguna palabra clave que pueda usar en la primera línea del método estático en lugar de "Amistad"?
De esta manera si el nombre de la clase cambia, el método estático no tendrá que ser editado. Tal como está, el método estático debería editarse si el nombre de la clase cambia.
cuando trato de usar self .__ class__ dentro de un método estático, consigo nombre global 'yo' no está definido – Eddified
¿Sigue pasando "auto "al método? Recuerde que "self" es un nombre de parámetro, no una palabra clave. –
@Eddified: probablemente debería haber sido un comentario sobre la respuesta, no la pregunta –