gpt4 book ai didi

python - 如何有效地将多个类链接在一起

转载 作者:行者123 更新时间:2023-11-28 18:43:08 25 4
gpt4 key购买 nike

背景:我一直在用 Python 开发游戏,为了保持一切干净、有条理和 Pythonic 方式,我有一个包含多个 Python 文件的文件夹,每个文件包含一个大类,例如“MapEngine”或“NPCEngine”。

在 main.py 中,我从每个文件加载每个类,并将所有内容与“游戏”类“粘合在一起”,例如:

from folder import *

class Game:

def __init__(self):
self.MapEngine = MapEngine.MapEngine()
...

def loop(self):
...

由于诸如“CollisionEngine”之类的类需要来自其他类(例如“MapEngine”)的数据,因此我通常将前者(即CollisionEngine)中的一些变量分配给后者(即MapEngine),以便使用MapEngine加载的 map 数据或函数:

class CollisionEngine:

def __init__(self, MapClass, ...):
self.MapEngine = MapClass

问题:好吧,由于许多类必须链接到其他类,一段时间后就很难弄清楚要先加载哪个类才能分配变量。此外,像“EventEngine”这样的类需要访问所有其他类。我的代码变得难以阅读,当 2 个类彼此同等重要时,我遇到了麻烦。

问题:我听说过类继承,但我认为它不能应用在这里,因为每个类在功能上都大不相同。因此,有没有一种方法可以将每个类完美地链接在一起,就好像它们都是一个大类的一部分一样?换句话说,有没有办法在一个类中引用其他类的变量?

(我的想法:也许,我可以编写一个名为“Request”的类,它将充当顶级类管理器。虽然,我认为我将不得不使用 exec() 或 eval() 等函数,效率不高而且有些危险。)

这是我的第一篇文章,我尽量表达清楚,请让我澄清,谢谢你的回复!

最佳答案

考虑将您的项目分成几层 - 这应该有助于您使事情更有条理并使导入更加自然。

原则是代码的下层“蛋糕”不应依赖于(读作:导入)代码的上层。

例如,您可能有一个基础层,其中包含在不同层的大量代码中使用的通用数据结构、实用程序类和算法。

然后你可能有一个模型层依赖于基础层(即数据结构/实用程序/算法)但没有别的。模型层提供领域内对象的模型。

然后您可能会有一个依赖于模型层的游戏层(因此您的游戏层中的模块从模型层导入内容是非常合理的,但反之则不然)。

关于python - 如何有效地将多个类链接在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23623425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com