python - 如果没有子类对象,为什么类属性不起作用?
问题描述
我注意到如果你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
?
解决方案
推荐阅读
- angularjs - ReferenceError: newFunction 未定义
- python - 散景:垂直条的宽度不变
- visual-studio - 我可以在 Visual Studio 2017 专业版上使用现有的 Visual Studio 2017 工作负载(来自社区版)吗?
- angular - Angular 5 中的单元测试模型属性绑定
- ajax - 接受 Ext.Ajax.request 中的应用程序/pdf
- javascript - 在本地系统中工作,但在服务器中上传时不工作
- java - 编辑 Java 类文件
- python - 如何在python中对具有特定键值的复杂json进行排序
- oracle - oracle数据库数据从一个到多个相关表同步
- asp.net - 实体框架多对多关系错误