В объектно - ориентированном программировании на основе классов переменная экземпляра — это переменная, определенная в классе (т. е. переменная-член ), для которой каждый экземпляр объекта класса имеет отдельную копию или экземпляр . Переменная экземпляра имеет сходство с переменной класса [1] , но не является статической . Переменная экземпляра — это переменная, которая объявлена в классе, но вне конструкторов , методов или блоков . Переменные экземпляра создаются при создании экземпляра объекта и доступны всем конструкторам, методам или блокам в классе. Модификаторы доступа могут быть переданы переменной экземпляра.
Переменная экземпляра не является переменной класса , хотя между ними есть сходства. Это тип атрибута класса (или свойства класса, поля или элемента данных). Та же дихотомия между членами экземпляра и класса применима и к методам («функциям-членам»); класс может иметь как методы экземпляра , так и методы класса .
Каждая переменная экземпляра живет в памяти в течение всего времени существования объекта, которому она принадлежит. [2]
Переменные — это свойства, которые объект знает о себе. Все экземпляры объекта имеют свои собственные копии переменных экземпляра, даже если значения от одного объекта к другому одинаковы. Один экземпляр объекта может изменять значения переменных своего экземпляра, не затрагивая все остальные экземпляры. Переменные экземпляра могут использоваться всеми методами класса, если метод не объявлен как статический. [3]
структура Запрос { статический int count1 ; // имя переменной не важно int Number ; Запрос (); { число = счетчик1 ; // изменяет переменную экземпляра "this->number" ++ count1 ; // изменяет переменную класса "Request::count1" } };int Request :: count1 = 0 ;
В этом примере C++ переменная экземпляра Request::number
является копией переменной класса Request::count1
, где каждому созданному экземпляру присваивается последовательное значение count1
перед его увеличением . Поскольку number
это переменная экземпляра, каждый Request
объект содержит свое собственное значение; напротив, Request::count1
всем экземплярам класса доступен только один объект с одинаковым значением.
класс Dog : def __init__ ( self , Breed ): self . породы = порода # переменная экземпляра# собака_1 — это объект , # который также является экземпляром класса Dog Dog_1 = Dog ( «Бордер-колли» )
В приведенном выше коде Python переменная экземпляра создается при анализе аргумента в экземпляре со спецификацией позиционного аргумента породы.