Python:从另一个类调用方法的最佳方法?

我有以下代码:

class Player:
    def __init__(self, username, trip, model):
        self.username = username
        self.trip = trip
        self.hp = 100


    #### For player moving location/room ####
    def Move(self, dest):
        if dest == self.loc:
            return True

        # Check destination room is accessible from current room
        for room in aGame['rooms']:
            if room['ref'] == self.loc:
                for acsroom in room['acs']:
                    if acsroom == dest:
                        self.loc = dest
                        return True
        return False

aGame是一个在此类之外定义的数组,因此此代码不起作用.
由于这个类中可能有许多其他函数可能会使用aGame数组,我应该这样做:

class Player:
    def __init__(self, username, trip, model, aGame):
        self.username = username
        self.trip = trip
        self.hp = 100
        self.aGame = aGame            

    #### For player moving location/room ####
    def Move(self, dest):
        if dest == self.loc:
            return True

        # Check destination room is accessible from current room
        for room in self.aGame['rooms']:
            if room['ref'] == self.loc:
                for acsroom in room['acs']:
                    if acsroom == dest:
                        self.loc = dest
                        return True
        return False

或者这样做会更好:

class Player:
    def __init__(self, username, trip, model):
        self.username = username
        self.trip = trip
        self.hp = 100          

    #### For player moving location/room ####
    def Move(self, dest, aGame):
        if dest == self.loc:
            return True

        # Check destination room is accessible from current room
        for room in aGame['rooms']:
            if room['ref'] == self.loc:
                for acsroom in room['acs']:
                    if acsroom == dest:
                        self.loc = dest
                        return True
        return False

或者我应该让aGame成为一个全局变量(如果是这样,如何,请注意这个类在不同的文件中)?

由于aGame是一个遍布各处的数组,因此必须在每个类中复制它是不正确的.
我可能有这个错误,我正在慢慢学习OOP,谢谢你的帮助.

最佳答案
在我看来,第一个选项是正确的,因为它没有充分的理由使用全局变量.所以选择在第二和第三之间.

决定性的功能是,如果您想要为多个aGame值使用相同的Player实例.如果只有一个值,那么我会将它传递给构造函数(你的选项2)或使用gnibbler的想法使它成为一个类变量.我可能赞成将它传递给构造函数以便于测试.

如果您希望同一个Player实例可用于多个aGame值,那么选项3可能是实现该目标的最简洁方法.

转载注明原文:Python:从另一个类调用方法的最佳方法? - 代码日志