Не получается переопределить __setattr__
Всем доброго времени суток! Сижу, разбираюсь с ООП. Вот написал маленький кусочек кода и пытаюсь разобраться:
class Point:
Peppa = 6
def __init__(self, x=0, y=0):
self.__x = x
self.__y = y
def __setattr__(self, key, value):
if key == 'Peppa':
raise NameError('SwinkaError')
else:
self.__dict__[key] = value
Объясните мне, пожалуйста: Почему, если я пишу дальше вот так:
pt = Point(4,10)
pt.Peppa = 15
то ошибка бросается. NameError: SwinkaError
А если я пишу во так:
pt = Point
pt.Peppa = 15
То интерпретатор не бросает ошибку и присваивает свойству 15.
Что вообще означает, когда создаётся экземпляр от класса без скобок? (т.е. когда пишется pt = Point, а не pt = Point())
Заранее огромное спасибо!