Python:多个文件类

2024-10-05 18:34:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道你怎么能得到在文件之间分割的类来编辑我的主游戏循环中的变量。在

举个例子,这是我要完成的一个非常基本的版本。在

玩家等级:

class Player():
    def __init__(self, name, field):
        self.name = name
        self.field = field
        self.health = 500
    def summon(self,card):
        self.field.summon(card)

字段类别:

^{pr2}$

还有我的游戏档案:

from Player import Player
from Field import Field

player1_field = Field()
player1 = Player("Steve", player1_field)

test_card = ["Test Card", 300] # Name, Power
player1.summon(test_card)

这将引发错误:

NameError: global name 'player1' is not defined

在我的游戏中,我需要在文件之间分割类,但是我很难让它们互相交谈。我想知道如何声明我的player对象,以便可以从我的所有类中访问它们,这将成为一个很长的列表。在

如果你需要我编辑这个问题,请说出来。提前谢谢!在


Tags: 文件namefromtestimportself游戏编辑
2条回答

对于您要做的事情,避免完全访问全局变量。您不需要它们,它们会妨碍您设计正确的设计。在

在OO设计中,对象操纵自己或其他对象。如果您希望Field操作Player,请将播放机作为summon()的参数或作为{}的构造函数的参数传递。这取决于你试图建模的逻辑:如果你能召唤不同的玩家到场上,把玩家作为summon()的参数传递。在

将来我会提供完整的回溯。在

Traceback (most recent call last):
  File "stuff.py", line 8, in <module>
    player1.summon(test_card)
  File "/Users/jvanvoorst/blah2/Player.py", line 7, in summon
    self.field.summon(card)
  File "/Users/jvanvoorst/blah2/Field.py", line 6, in summon
    player1.health = 400

问题是字段类成员函数callum对player1一无所知。在

您需要传递对播放器的引用,或者将播放器添加到Field类中。如何最好的设计这取决于有多少个场地,多个球员可以使用同一个场地,等等

相关问题 更多 >