Почему свойства класса не работают, если нет объекта подкласса? - PullRequest
0 голосов
/ 05 марта 2020

Я заметил, что если в вашем классе есть 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?

...