Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 4, 2019 18:24:50

lyolic
От:
Зарегистрирован: 2011-01-15
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите разобраться с переменными класса и Инстанса

Добрый день, помогите, плиз, понять, как в вышеуказанном примере соотносятся переменные connection класса и инстанса?

 class Database:
    connection = 4
    print "Class Start"
    def __init__(self):
        print "Class Init!"
    
    def connect_dbs(self):
        if self.connection is not None:
          self.connection = self.connection + 1
          return self.connection
        else:     
          self.connection = 1
          print "Initial Connecting" 
          return self.connection
        
print "Start"        
U = Database()
for i in range(10):
    print U.connect_dbs() 
print "One more"
U2 = Database()
for i in range(10):
    print U2.connect_dbs()
print Database.connection
И результат работы скрипта:
 Class Start
Start
Class Init!
5
6
7
8
9
10
11
12
13
14
One more
Class Init!
5
6
7
8
9
10
11
12
13
14
4

Почему в вышеописанном случае переменная инстанса инициализируется переменной класса, а переменная класса не меняется :)



Офлайн

#2 Апрель 4, 2019 18:51:26

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Помогите разобраться с переменными класса и Инстанса

lyolic
Пока у объекта нет собственного атрибута с именем name, он обращается к атрибуту класса __class__.name, а как только вы сделали первое присваивание self.name = …., вы объявили собственный атрибут, принадлежащий только объекту и не связанный с классом.



Отредактировано FishHook (Апрель 4, 2019 18:51:46)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version