我需要一些帮助。最初这是在python 2.76下运行的一些代码的一部分。这现在需要在vanilla python 2.4安装下运行。我在2.76下学习并且无法弄清楚如何调整它以使用2.4。
这是一个自定义异常,在其他地方有时我会将stdout / stderr或其他信息传递给异常对象,以便在别处使用。
以下是例外:
class OpenSSLWalletError(Exception):
def __init__(self, message, command=None, stdout=None, stderr=None):
super(OpenSSLWalletError, self).__init__(message)
self._message = message
self._command = command
self._stdout = stdout
self._stderr = stderr
在2.4下,它抱怨:
Traceback (most recent call last):
File "./testpywallet.py", line 20, in ?
user = w.get("rest_ro.userX")
File "./openssl.py", line 167, in get
raise OpenSSLWalletError("Error: key '%s' not found in wallet '%s'" % (key_name, self.wallet), None, None, None)
File "./openssl.py", line 27, in __init__
super(OpenSSLWalletError, self).__init__(message)
TypeError: super() argument 1 must be type, not classobj
答案 0 :(得分:1)
super()
仅适用于新式课程。在Python 2.4中,异常不从object
继承,它们仍然是旧式类。
直接调用父构造函数:
class OpenSSLWalletError(Exception):
def __init__(self, message, command=None, stdout=None, stderr=None):
Exception.__init__(self, message)
self._message = message
self._command = command
self._stdout = stdout
self._stderr = stderr
2.4异常机制无法处理新式类,因此object
中的混合将无效。