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