File "C:\Users\kevin\Documents\Programs\ParLumen\trait.py", line 76, in __str__
ret_str = super().__str__()
File "C:\Users\kevin\Documents\Programs\ParLumen\trait.py", line 39, in __str__
ret_str += f'{self.name}\n'
RecursionError: maximum recursion depth exceeded
Есть много-много строк, но повторяются те же самые две строки, а затем последняя, другая строка: "RecursionError: превышена максимальная глубина рекурсии"
I 'Я не совсем уверен, почему это происходит.
Вот код, вызывающий проблему:
from abc import ABC, abstractmethod
from enum import Enum, unique
from parlumen.game import *
# Base Trait class
class Trait(ABC):
def __init__(self, name, short_desc="No Desc", long_desc=None):
self.name = name
# self.value = value # may restrict this with req. 'avail_values()' func
"""
if short_desc is not "No Desc":
self.short_desc = short_desc
"""
self.short_desc = short_desc
if long_desc is None:
self.long_desc = self.short_desc
else:
self.long_desc = long_desc
@abstractmethod
def __str__(self):
ret_str = ""
ret_str += f'{self.name}\n'
ret_str += f'{self.long_desc}'
return ret_str
# Area of Effect Definition
@unique
class Focus(Enum):
NoFocus = 'None'
Origin = 'Origin'
Reversed = 'Reversed'
class AreaOfEffect(Trait):
def __init__(self, area, focus=None):
super().__init__(self, "Area of Effect")
self.area = area
if focus is None :
self.focus = Focus.NoFocus
else:
self.focus = focus
self.long_desc = f"Gives an attack or spell an area of effect of self.area"
def __str__(self):
ret_str = super().__str__()
ret_str += f"\nArea of Effect: {self.area}, Focus: {self.focus}"
return ret_str
aoe = AreaOfEffect(3, Focus.Origin)
print(aoe)
Более конкретно, проблема, кажется, относится к моему методу __str__
для Trait
кажетсямне не нравится иметь self.name
или self.long_desc
- вот когда возникает проблема.
В общем, это своего рода беспорядок, но я действительно пытаюсь разобраться с этим, прежде чем продолжить.Странно, что это происходит только для Черты, а не для подкласса AreaOfEffect
s __str__