让我们假设我有一些RPG的功能我正在努力......
def name_of_function():
action
Run Code Online (Sandbox Code Playgroud)
并希望在每个函数中实现ax类(见下文),而不必重写每个类.我如何将该类创建为全局类.我不确定我是否使用了正确的术语,但请帮忙.这总是让我难以创建基于文本的RPG游戏.一个全球类的例子真棒!
class axe:
attack = 5
weight = 6
description = "A lightweight battle axe."
level_required = 1
price = 10
Run Code Online (Sandbox Code Playgroud)
你无法在Python中创建任何真正全局的东西 - 也就是说,无论如何,任何模块都可以神奇地使用它.但是一旦你理解了模块和导入的工作方式,这几乎不重要.
通常,您创建类并将它们组织到模块中.然后将它们导入到需要它们的任何模块中,这会将类添加到模块的符号表中.
因此,例如,您可以创建一个名为模块weapons.py,并创建一个WeaponBase在它的类,然后Axe和Broadsword类衍生WeaponsBase.然后,在任何需要使用武器的模块中,你都会放弃
import weapons
Run Code Online (Sandbox Code Playgroud)
在文件的顶部.执行此操作后,weapons.Axe返回Axe类,weapons.Broadsword返回Broadsword类,依此类推.你也可以使用:
from weapons import Axe, Broadsword
Run Code Online (Sandbox Code Playgroud)
这增加Axe和Broadsword到模块的符号表,使代码几乎做你想要它做你说的到底是什么.
你也可以使用
from weapons import *
Run Code Online (Sandbox Code Playgroud)
但由于两个原因,这通常不是一个好主意.首先,它会导入模块中的所有内容,无论您是否要使用它 - WeaponsBase例如.其次,如果有weapons一个函数与导入模块中的函数同名,则会遇到各种令人困惑的问题.
系统中有很多细微之处import.例如,您必须小心确保模块不会尝试相互导入.最终你的项目变得足够大,你不想把它的所有模块放在同一个目录中,你将不得不学习类似的东西__init__.py.但你可以担心这一点.
| 归档时间: |
|
| 查看次数: |
17971 次 |
| 最近记录: |