我有一些代码(ev3dev):
class Motor(object):
def __init__(self, portName):
self.base = "/sys/class/tacho-motor/motor"
self.number = self.getMotorNumberWithSpecificPortName(portName)
self.name = self.base + str(self.number) + "/"
self.setDefaultValues()
def __del__(self):
self.callReset()
(...)
class TurnMotor(Motor):
def __init__(self):
super(TurnMotor, self).__init__("outA")
def __del__(self):
super(TurnMotor, self).__del__()
我们的目标是定义多个motor类,如本例中的TurnMotor
,这些类通过其特定的端口从Motor
和自动__init__
继承。他们还应该在破坏时调用父母__del__
方法来重置马达。在
我知道在这种情况下,我必须为子类定义一个__init__
方法,以便用我想要的端口初始化子类,但是如果我省略了子类中__del__
的定义,那么父__del__
方法是否仍会从子类中调用?
一般来说,__init__
也可以这样吗?在
提前谢谢,如果这是重复的,很抱歉。在
__init__
和{对于程序员来说,重要的是您不需要来定义超类con/descructor。如果不这样做,Python会根据方法解析顺序(MRO)在内部查找链(即基类)中查找con/destructor。在
如果你想在派生类中使用con/destructor,如果你想创建或销毁超类的实例变量(大多数时候你想这样做,因为这就是你首先派生的原因),或者在超级类con/destructor中执行任何操作,然后必须相应地调用超级类方法。在
这并不是显式的,因为(a)Python给了您不这样做的机会,(b)pythonzen说:“显式比隐式好”。在
是的。如果不重写子类中的方法,则将调用父方法。对于magic methods类似}的情况也是如此。在
__del__
或{这里是我在pythoncli中运行的一个小示例
Class B
将包含{相关问题 更多 >
编程相关推荐