classes PHP peuvent utiliser le mot-clé « auto » dans un contexte statique, comme ceci:En Python, comment référencer une classe de manière statique, comme le mot-clé "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.
}
}
?>
Il est évident que je ne peux pas utiliser « soi » de cette manière en Python parce que « soi » ne se réfère pas à une classe, mais à une instance. Donc est-il possible de référencer la classe actuelle dans un contexte statique en Python, similaire au "self" de PHP?
Je suppose que ce que j'essaie de faire est plutôt un-pythonic. Pas sûr cependant, je suis nouveau à Python. Voici mon code (en utilisant le framework 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
Mon code fonctionne comme prévu. Je voulais juste savoir: y a-t-il un mot-clé que je pourrais utiliser sur la première ligne de la méthode statique au lieu de "Friendship"? De cette façon, si le nom de la classe change, la méthode statique n'aura pas à être modifiée. En l'état, la méthode statique devrait être éditée si le nom de la classe change.
lorsque je tente d'utiliser l'auto .__ class__ dans une méthode statique, je reçois nom « auto » global n'est pas définie – Eddified
Vous êtes de passage encore « auto "à la méthode? Rappelez-vous que "self" est un nom de paramètre, pas un mot-clé. –
@Eddified: cela aurait probablement dû être un commentaire sur la réponse, pas la question –