0
我有一个包含我想用来存储API端点的类的文件。 我想使用类的原因是,我可以通过输入api.level2.resources
来访问端点。类继承的递归错误
下面是该文件的样子,与API
作为主类和SubEntries
的“孩子”:
class API(object):
"""
A class for logging to stdout and/or a file. Supports color output for different log kinds.
"""
def __init__(self):
"""
:param log_to_file: Bool - Whether to log to a file or only to stdout (False)
:param s: String - Log file name without extension for success logs
:param e: String - Log file name without extension for error logs
:param prefix: Bool - Whether to show the prefix or not
:param timestamp: Bool - Whether to show the timestamp or not
:param debug: Bool - Whether to show debug messages or not
"""
self.login = '/login'
self.logout = '/logout'
self.sysRequest = '/sysReq'
self.level2 = SubEntries()
class SubEntries(API):
def __init__(self):
super().__init__()
self.host_info = '/info'
self.resources = '/resources'
但是,当我尝试使用这样的:
from src import API
api = API()
print(api.level2.resources)
我收到以下错误:
Traceback (most recent call last):
File "D:/_projects/pynap/new.py", line 4, in <module>
api = API()
File "D:\_projects\pynap\src\QAPI.py", line 18, in __init__
self.level2 = SubEntries()
File "D:\_projects\pynap\src\QAPI.py", line 24, in __init__
super().__init__()
File "D:\_projects\pynap\src\QAPI.py", line 18, in __init__
self.level2 = SubEntries()
File "D:\_projects\pynap\src\QAPI.py", line 24, in __init__
super().__init__()
File "D:\_projects\pynap\src\QAPI.py", line 18, in __init__
self.level2 = SubEntries()
File "D:\_projects\pynap\src\QAPI.py", line 24, in __init__
...
File "D:\_projects\pynap\src\QAPI.py", line 24, in __init__
super().__init__()
File "D:\_projects\pynap\src\QAPI.py", line 18, in __init__
self.level2 = SubEntries()
File "D:\_projects\pynap\src\QAPI.py", line 24, in __init__
super().__init__()
File "D:\_projects\pynap\src\QAPI.py", line 18, in __init__
self.level2 = SubEntries()
File "D:\_projects\pynap\src\QAPI.py", line 24, in __init__
super().__init__()
File "D:\_projects\pynap\src\QAPI.py", line 18, in __init__
self.level2 = SubEntries()
File "D:\_projects\pynap\src\QAPI.py", line 24, in __init__
super().__init__()
File "D:\_projects\pynap\src\QAPI.py", line 18, in __init__
self.level2 = SubEntries()
File "D:\_projects\pynap\src\QAPI.py", line 24, in __init__
super().__init__()
File "D:\_projects\pynap\src\QAPI.py", line 18, in __init__
self.level2 = SubEntries()
File "D:\_projects\pynap\src\QAPI.py", line 24, in __init__
super().__init__()
File "D:\_projects\pynap\src\QAPI.py", line 18, in __init__
self.level2 = SubEntries()
File "D:\_projects\pynap\src\QAPI.py", line 24, in __init__
super().__init__()
File "D:\_projects\pynap\src\QAPI.py", line 18, in __init__
self.level2 = SubEntries()
File "D:\_projects\pynap\src\QAPI.py", line 24, in __init__
super().__init__()
File "D:\_projects\pynap\src\QAPI.py", line 18, in __init__
self.level2 = SubEntries()
File "D:\_projects\pynap\src\QAPI.py", line 24, in __init__
super().__init__()
File "D:\_projects\pynap\src\QAPI.py", line 18, in __init__
self.level2 = SubEntries()
File "D:\_projects\pynap\src\QAPI.py", line 24, in __init__
super().__init__()
File "D:\_projects\pynap\src\QAPI.py", line 18, in __init__
self.level2 = SubEntries()
File "D:\_projects\pynap\src\QAPI.py", line 24, in __init__
super().__init__()
File "D:\_projects\pynap\src\QAPI.py", line 18, in __init__
self.level2 = SubEntries()
File "D:\_projects\pynap\src\QAPI.py", line 24, in __init__
super().__init__()
File "D:\_projects\pynap\src\QAPI.py", line 18, in __init__
self.level2 = SubEntries()
File "D:\_projects\pynap\src\QAPI.py", line 24, in __init__
super().__init__()
File "D:\_projects\pynap\src\QAPI.py", line 18, in __init__
self.level2 = SubEntries()
File "D:\_projects\pynap\src\QAPI.py", line 24, in __init__
super().__init__()
File "D:\_projects\pynap\src\QAPI.py", line 18, in __init__
self.level2 = SubEntries()
File "D:\_projects\pynap\src\QAPI.py", line 24, in __init__
super().__init__()
File "D:\_projects\pynap\src\QAPI.py", line 18, in __init__
self.level2 = SubEntries()
File "D:\_projects\pynap\src\QAPI.py", line 24, in __init__
super().__init__()
File "D:\_projects\pynap\src\QAPI.py", line 18, in __init__
self.level2 = SubEntries()
RecursionError: maximum recursion depth exceeded while calling a Python object
我很确定解决方案很简单,我只是不确定如何构建类能够像我想要的那样使用它。
那么,你期望什么?每当你实例化你的API对象时,它的'__init __()'方法被调用,然后实例化一个调用__init __()方法的'SubEntries'对象,该方法调用其父'__init __()'方法来实例化另一个'SubEntries'实例等,等等...... – zwer
[如何调用超级构造函数?]的可能重复(https://stackoverflow.com/questions/2399307/how-to-invoke-the-super-构造函数) –
@zwer我意识到这一点,但我不知道如何以任何其他方式访问子类的值。我只想初始化父级,但仍然将子类及其值加载到level2中。 – rhillhouse