如何使用self.__init__
重新初始化基类?
在下面的例子中我的目标是要继承逸康这是一个插座衍生的驱动程序。这种处理连接/断开。如果它断开,我们需要使用__init__
重新初始化,但它似乎是指在comDriver时self.__init__
被调用。
如何正确初始化超考虑到这一点?
(其他:self.__init__
在连接()是指comDriver,不逸康像它应该)
下面是一个简单的例子来重现在Python 3.x的错误
class eComm():
def __init__(self):
self.s = "example object"
self.initialized = True
self.connected = False
def connect(self, IP_ADDRESS, PORT):
if self.initialized:
print(IP_ADDRESS, PORT)
else:
print("REINITIALIZING")
self.__init__()
self.connected = True
return(True)
class comDriver(eComm):
def __init__(self, IP_ADDRESS, PORT):
self.IP = IP_ADDRESS
self.PORT = PORT
super().__init__()
pass
def getTemp(self):
print("EXAMPLE FUNCTION")
return(1)
x = comDriver("192", 7)
x.connect("161", 6)
x.initialized = False
x.connect("111", 5)
IMO你使用特殊的方法__init__
错误。这意味着要初始化一个Python对象,其范围之外没有什么。
随着你的意图,我建议你创建一个单独的初始化函数,并从__init__
调用它。下面是一个例子:
class eComm():
def __init__(self):
self.initialize_eComm()
def initialize_eComm(self):
self.s = "example object"
self.initialized = True
self.connected = False
然后你就可以用self.__init__()
替代self.initialize_eComm()
避免在子类名称冲突。
在连接自.__ init__()是指comDriver,不逸康像它应该
这并不完全保持 - self
指调用对象,这是comDriver
。如果你想不管是什么类扩展它来打电话到__init__
方法上eComm
,你将有明确的参考。
eComm.__init__(self)
但是,其他的答案和评论是正确的,这不是一个很好的利用__init__
的。