我知道你不能调用object.__setattr__没有继承的对象object,但两者之间还有什么不同吗?我正在使用Python 2.6,如果这很重要的话.
背景:我有一个用寄存器建模芯片的类,芯片有一堆寄存器,其中一个是内置温度传感器的高温限制.
我有以下内容:
class foo():
def __init__(self):
# does not set self._hiTemp!
...
def setHiTemp(self, t):
self._hiTemp = t
def getHiTemp(self):
return self._hiTemp
def checkHiTemp(self):
return self._temp > self._hiTemp
Run Code Online (Sandbox Code Playgroud)
我不申报的原因self._hiTemp在__init__是因为用户可能不关心芯片的温度感测功能.用户可以以不同的方式使用芯片,并且赋予该变量无意义的值没有意义.但是,如果用户在self._hiTemp没有先设置的情况下尝试使用,则使用未声明变量的错误比一些模糊错误(如比较数字和无(或者在某些情况下甚至根本没有错误)更容易调试/回溯).
这一切都很好,直到我开始pylint,当然我得到W0201:在init之外定义的属性几乎无处不在.我只是想知道这种编码风格是否令人不满,如果是这样,"Pythonic方式"是什么.
谢谢