首页 > 解决方案 > 如果没有子类对象,为什么类属性不起作用?

问题描述

我注意到如果你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

标签: pythonclasssubclass

解决方案


推荐阅读