python - 如何在 Python 中创建全局类(如果可能)?

标签 python class

假设我正在开发的 RPG 有多个函数...

def name_of_function():
     action

并希望在每个函数中实现 ax 类(见下文),而不必重写每个类。我将如何将该类创建为全局类。我不确定我是否使用了正确的术语,但请帮忙。这一直让我无法创建基于文本的 RPG 游戏。一个全局类的例子会很棒!

class axe:
    attack = 5
    weight = 6
    description = "A lightweight battle axe."
    level_required = 1
    price = 10

最佳答案

您不能在 Python 中创建任何真正全局的东西——也就是说,任何模块无论如何都可以神奇地使用的东西。但一旦您了解了模块和导入的工作原理,这就无关紧要了。

通常,您创建类并将它们组织到模块中。然后将它们导入到任何需要它们的模块中,这会将类添加到模块的符号表中。

例如,您可以创建一个名为 weapons.py 的模块,并在其中创建一个 WeaponBase 类,然后是 AxeBroadsword 派生自 WeaponsBase 的类。然后,在任何需要使用武器的模块中,你将放置

import weapons

在文件的顶部。执行此操作后,weapons.Axe 返回 Axe 类,weapons.Broadsword 返回 Broadsword 类,并且很快。您还可以使用:

from weapons import Axe, Broadsword

AxeBroadsword 添加到模块的符号表中,允许代码几乎完全按照您所说的去做。

你也可以使用

from weapons import *

但这通常不是一个好主意,原因有二。首先,无论您是否要使用它,它都会导入模块中的所有内容 - 例如 WeaponsBase。其次,如果 weapons 中的函数与导入模块中的函数同名,您会遇到各种令人困惑的问题。

import 系统有很多微妙之处。例如,您必须小心确保模块不会尝试相互导入。最终您的项目变得足够大,以至于您不想将其所有模块都放在同一个目录中,并且您将不得不学习诸如 __init__.py 之类的东西。但您以后可以担心这一点。

关于python - 如何在 Python 中创建全局类(如果可能)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4000141/

相关文章:

python - 获取 "AttributeError: ' float'对象没有属性 'replace'“替换字符串时出错

c++ - 为什么C++中同时存在struct和class?

c++ - 多层继承在 C++ 中有意义吗?

Python 3、列表理解、作用域以及如何与外部变量进行比较

python - 如何合并两个数据框与重叠日期时间范围内的列

python - 在 Mac OS 10.6.6 中使用 python-mysql 配置 django 时出错

python - setup(name) 和 Extension(name) 之间有什么关系

c++ - 防止类 A 创建类 B 的实例

c++ - 如何打破 GDB 中类的每个方法?

c++ - 在类默认构造函数中初始化 2x2 矩阵