ДЕНЬ 4. Переменные класса (атрибуты) и переменные экземпляра (атрибуты)
- Переменные класса: между экземплярами всех классов могут совместно использовать переменные, переменные класса, чтобы сохранить только одну копию всех объектов в комнате
- Определено в теле класса
- Все экземпляры классов объектов могут получить доступ к переменным класса
- Переменный класс может быть изменена только по классу, экземпляр объект доступны только для чтения
- Использование
对象名.类变量名 = new value
не используются для изменения атрибута класса объекта, но , чтобы добавить новые объекты недвижимости
class Demo:
# 类变量
classVar = 0
def __init__(self):
self.instanceVar = 1
if __name__ == '__main__':
demo1 = Demo()
demo2 = Demo()
# 类的所有实例对象都可以访问类变量
print(demo1.classVar) # 0
print(demo2.classVar) # 0
# 由类修改类变量
Demo.classVar = 2
print(demo1.classVar) # 2
print(demo2.classVar) # 2
# 注意,这样不是在修改类变量,而是给实例对象添加了一个属性
demo1.classVar = 2
print(demo1.classVar) # 2
- Переменные: когда инстанцирование объектов, каждый из них будет иметь свой собственный переменный экземпляр, переменные экземпляра не влияют между
- Определено в конструкторе
- Изменить переменный экземпляр экземпляра объекта, экземпляр класса переменные не изменял смысл
- Каждый экземпляр объекта имеет переменный экземпляр
class Demo:
# 类变量
classVar = 0
def __init__(self):
# 实例变量
self.instanceVar = 1
if __name__ == '__main__':
print(demo1.instanceVar) # 1
print(demo2.instanceVar) # 1
# 各实例对象间的实例变量互相不影响
demo1.instanceVar = 2
print(demo1.instanceVar) # 2
print(demo2.instanceVar) # 1
# 用类修改实例变量没意义
Demo.instanceVar = 2
print(demo1.instanceVar) # 2
print(demo2.instanceVar) # 1
4,1 резюме
Переменная (атрибут) | Определения | Читать | модификация | память |
---|---|---|---|---|
переменные класса | Определено в теле класса | className.classVar иobjectName.classVar |
className.classVar = new value |
Просто сохраните копию |
переменные экземпляра | Определено в конструкторе | objectName.instanceVar |
objectName.instanceVar = new value |
Каждый экземпляр объекта имеет, среди объектов, независимо друг от друга |
** Примечание: ** использование
objectName.classVar = new value
подлежит добавить новое свойство
Ссылка в статье:
Python (классы и объекты переменных классов и атрибутов класса)
Часть V иллюстрирует Python []: объектно-ориентированное - класс - первичная Основы