У меня вопрос о __class__
в python.
В документации указано, что __class__
- класс, к которому принадлежит экземпляр класса. Поэтому я провел серию экспериментов:
class counter:
count = 0
def __init__(self):
self.__class__.count += 1
NewCounter1 = counter()
print NewCounter1.count #The result is 1
NewCounter2 = counter()
print NewCounter2.count #The result is 2
print NewCounter2.__class__.count is NewCounter2.count #result: True
Все идет хорошо.
Затем введите код следующим образом:
NewCounter2.__class__.count = 3
print NewCounter1.count #result:3
print NewCounter1.__class__.count #result:3
print NewCounter2.count #result:3
print NewCounter2.__class__.count #result:3
print NewCounter2.__class__.count is NewCounter2.count #result: True
Из приведенного выше кода я подумал, что возможно NewCounter1.count
равно NewCounter1
или __class__.count
, но следующий код меня удивил:
NewCounter2.count = 5
print NewCounter1.count #result:3
print NewCounter1.__class__.count #result:3
print NewCounter2.count #result:5
print NewCounter2.__class__.count #result:3
print NewCounter2.__class__.count is NewCounter2.count #result: False
Почему изменился NewCounter2.count
, но NewCounter2.__class__.count
остался на 3? Что еще, когда я изменил NewCounter2.count
, NewCounter2.__class__.count is NewCounter2.count
стал False
. Что в мире есть атрибут __class__
?