【发布时间】:2021-10-18 01:29:18
【问题描述】:
我为我正在开发的微型游戏创建了一个超级简单的 Character 和 Buildable 类,我创建了一个嵌套类,其中 Character 用于外部类,而 Buildable 是内部类。我正在尝试在 Buildable 中的 upgradeBuildable 函数中循环来自 Character 的资源。
class Character:
# Constructor -- Also why do comments use # and not // -_-
def __init__(self):
self.name = "Pickle"
self.health = 100
self.resources = ["Fire", "Coal"]
self.buildObj = self.Buildable() # Object for nested 2nd class
# Function to display character info
def characterInfo(self):
print("CharacterInfo --> " + "Name:", self.name, "| Health:", self.health, "| Resources:", self.resources)
def printRes(self):
print(self.resources)
# Function for collecting resources
def collectResource(self, newResource):
self.resources.append(newResource)
class Buildable:
def __init__(self):
self.buildings = ["Fire 1"]
self.upgradeStatus = 0
self.outer = Character()
def displayBuildable(self):
print("Buildables -->", self.buildings)
def createBuildable(self, newBuilding):
self.buildings.append(newBuilding)
def upgradeBuildable(self, replaceBuilding):
if self.upgradeStatus == 0:
# Update selected building
for i in range(len(self.buildings)):
if self.buildings[i] == replaceBuilding:
self.buildings[i] = "2x"
break
print(Character.resources)
self.upgradeStatus = self.upgradeStatus + 1
print(self.upgradeStatus)
当我尝试从 upgradeBuildable 中的 Character 访问 print 资源属性时,我收到一个递归错误“RecursionError: maximum recursion depth exceeded”,这让我很困惑。
我要做的就是尝试打印角色在我的内部 Buildable 类中拥有的资源。非常感谢任何帮助!
我的主要如下:
from BW_Classes import Character
pick = Character()
pick.characterInfo()
# Object created for inner class -- Buildable()
build = pick.buildObj
build.displayBuildable()
print()
print("Building......")
build.createBuildable("Fire 2")
build.createBuildable("Coal Mine")
build.createBuildable("Coal Supreme")
build.createBuildable("Ocean")
build.displayBuildable()
print()
print("Upgrading....")
build.upgradeBuildable("Fire 2")
build.displayBuildable()
【问题讨论】:
-
欢迎来到 Salesforce StackExchange!我想您可能在搜索“超出最大递归深度”后偶然发现了这里,但该站点专注于 Salesforce 平台(基于云的客户关系管理系统)。您可能正在寻找Stack Overflow。