所以我知道类方法可用于“重载”python 中的 init 方法,但我遇到了一些问题。比方说,我有一个这样的构造函数:
def __init__(self, serviceName, endpoint, exportedInterface, exportedObject, remoteObjectInterface, remoteObjectProxy,
interruptionHandler, invalidationHandler):
self._serviceName = serviceName;
#etc.
@classmethod
def createConnection(cls, serviceName):
return cls(serviceName, None, None, None, None, None, None, None)
我真的必须为类方法中的每个数据成员列出一个值,只是为了使用类方法创建类的实例吗?此外,我计划稍后向该类添加更多数据成员,但我不喜欢这个笨拙的 init 函数和大约 15 个参数。有没有更好的方法来解决这个问题?
请您参考如下方法:
您可以为参数使用默认值。然后您可以指定要替换哪一个。
def __init__(self, serviceName, endpoint = None, exportedInterface = None,
exportedObject = None, remoteObjectInterface = None, remoteObjectProxy = None,
interruptionHandler = None, invalidationHandler = None):
self._serviceName = serviceName;
#etc.
@classmethod
def createConnection(cls, serviceName):
return cls(serviceName)
现在你可以像这样只设置一些参数(其他将使用它们的默认值):
@classmethod
def createConnectionWithInterruptionHandler(cls, serviceName, interruptionHandler):
return cls(serviceName, interruptionHandler=interruptionHandler)
