Я заметил, что если в вашем классе есть property
с функцией setter
, это не сработает, если вы не сделаете что-то подклассом. Вот пример:
Это ничего не печатает на выходе, и не устанавливает значение
class MyClass():
def __init__(self):
self.tax = 3
@property
def cost(self):
self._cost = 15
return self._cost - self.tax
@cost.setter
def cost(self, value):
self._cost = value
print "New Cost: {}".format(self._cost - self.tax)
mycls = MyClass()
mycls.cost = 55
Но если я подкласс object
, он работает нормально:
class MyClass(object):
def __init__(self):
self.tax = 3
@property
def cost(self):
self._cost = 15
return self._cost - self.tax
@cost.setter
def cost(self, value):
self._cost = value
print "New Cost: {}".format(self._cost - self.tax)
mycls = MyClass()
mycls.cost = 55
>>> New Cost: 52
Почему именно это? А что такое object
?