В других языках статические переменные доступны только через имя класса и вообще не относятся к экземпляру этого класса.
Я следую учебному пособию по Django Опросы . Кажется, что когда модель объявляется, поля этой модели являются статическими переменными:
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
Тем не менее, учебник демонстрирует, как можно использовать оболочку Django:
>>> from polls.models import Question
>>> q = Question(question_text="What's new?", pub_date=timezone.now())
Это действительно сбивает с толку меня, так как кажется, что мы создаем q
объект типа Question
, но который каким-то образом способен содержать информацию (question_test
и pub_date
), которая, как я думал, былаотносится только к классу, а не к экземпляру (статические переменные).
Может кто-нибудь объяснить мне, что происходит?
Как это возможно, что эти биты данных могут быть назначены на экземпляр класса? Это вещь, связанная с Python или Django? Если так, что q
даже представляет? Представляет ли он просто строку в таблице?
Это довольно странно, если исходить из C ++, где статическая переменная никогда не может быть связана с объектом класса.