PHP-классы могут использовать ключевое слово self в статическом контексте, например:
<?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.
}
}
?>
Очевидно, я не могу использовать "я" таким образом в Python, потому что "я" относится не к классу, а к экземпляру. Так есть способ, которым я могу ссылаться на текущий класс в статическом контексте в Python, подобно PHP "self"?
Я предполагаю, что я пытаюсь сделать, скорее, не-pythonic. Не уверен, хотя, я новичок в Python. Вот мой код (с использованием рамки 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
Мой код работает так, как ожидалось. Я просто хотел знать: есть ли ключевое слово, которое я мог бы использовать в первой строке статического метода вместо "Дружбы"?
Таким образом, если имя класса изменяется, статический метод не нужно редактировать. В этом случае статический метод должен быть отредактирован, если имя класса изменится.