Уведомления

Группа в Telegram: присоединиться

#1 Авг. 9, 2018 20:35:25

Voroshek
От:
Зарегистрирован: 2011-03-11
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

Где находится нофелет?

В какой области видимости?

 >>> class My_class:
>>>   nofelet = 1
>>>   def __init__(self):
>>>     self.dragonfly = 2
>>> a = My_class()
>>> a.nofelet
1
Хотя в __init__ он не создаётся, а Луц утверждает, что переменная a создаётся функцией __init__(). Но чёрт с ним, с Кащеем, он злодей…(с) Дальше - интереснее:
 >>> My_class.nofelet = 3
>>> My_class.dragonfly = 4
>>> a.nofelet
3
>>> a.dragonfly
2
То есть nofelet является общей переменной для My_class и для а… А теперь нет:
 >>> a.nofelet = 5
>>> My_class.nofelet = 6
>>> a.nofelet
5
То есть теперь это две разные переменные? А была одна что ли?



Офлайн

#2 Авг. 9, 2018 21:27:15

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3042
Репутация: +  211  -
Профиль   Отправить e-mail  

Где находится нофелет?

Изучите что такое атрибут объекта класса и атрибут экземпляра класса. Ну и ООП в целом



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Онлайн

#3 Авг. 9, 2018 23:18:35

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 6011
Репутация: +  540  -
Профиль   Отправить e-mail  

Где находится нофелет?

В Dive Into Pytyhon 3 есть глава, где описываются переменные экземпляра и переменные класса
http://getpython3.com/diveintopython3/iterators.html#instance-variables
http://getpython3.com/diveintopython3/iterators.html#a-plural-rule-iterator

Надо различать класс и экземпляр этого класса. Так как класс в питоне сам по себе так же является экземпляром, то у него могут быть собственные атрибуты и методы, как у какого-нибудь объекта. Атрибуты класса попадают ко всем его экземплярам в одном и том же виде. А методы класса объявляются статическими и могут использоваться напрямую, без создания экземпляра этого класса.

Атрибуты класса часто используются для задания констант, связанных с этим классом. Так ты можешь для класса окна Window иметь в этом классе читаемые константы Window.FULLSCREEN , Window.MINIMIZED. И потом ты как снаружи экземпляра, так и внутри экземпляра можешь эти константы использовать.



Отредактировано py.user.next (Авг. 9, 2018 23:19:12)

Офлайн

#4 Авг. 11, 2018 08:48:48

Voroshek
От:
Зарегистрирован: 2011-03-11
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

Где находится нофелет?

Пнятненько.
Учу по Луцу, из него это неочевидно



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version