Python遍历类对象列表并提取值

Python遍历类对象列表并提取值,python,Python,您好,我在尝试遍历类列表以打印出该类的实例所持有的特定值时遇到了一些问题。我的程序可以编译,但不会打印任何内容,我也尝试过使用“player.player in playerlist”在for循环中,但我也得到了同样的结果。任何帮助都将不胜感激 我的主要职能 class main: if __name__ == '__main__': while True: print("Please Select An Option Below:") print(

您好,我在尝试遍历类列表以打印出该类的实例所持有的特定值时遇到了一些问题。我的程序可以编译,但不会打印任何内容,我也尝试过使用“player.player in playerlist”在for循环中,但我也得到了同样的结果。任何帮助都将不胜感激

我的主要职能

class main:

if __name__ == '__main__':

    while True:

        print("Please Select An Option Below:")
        print("1 - Create Player:")
        print("2 - List Players:")
        print("3 - Create Team:")
        print("4 - Sell Player:")
        print("5 - Buy Player:")
        x = raw_input("Please select a option: \n")

        playerList = []

        if(x == '1'):

            import Player
            p1 = Player.player()
            pname = raw_input("Please Enter A Player Name \n")
            page = raw_input("Please Enter A Player Age \n")
            pwage = raw_input("Please Enter A Player Wage \n")
            pteam = raw_input("Please Enter A Player Team \n")
            p1.pname = pname
            p1.page = page
            p1.pwage = pwage
            p1.pteam = pteam
            playerList.append(p1)
            continue

        if(x == '2'):
            for p1 in playerList:
                print(p1.pname)
            continue
我的球员班

class player(object):

    @property
    def pname(self):
        return self.pname

    @pname.setter
    def pname (self, value):
        pass

    @property
    def page(self):
        return self.page

    @page.setter
    def page (self, value):
        pass

    @property
    def pwage(self):
        return self.pwage

    @pwage.setter
    def pwage(self, value):
        pass

    @property
    def pteam(self):
        return self.pteam

    @pteam.setter
    def pteam(self, value):
        pass
----更新-----


编写
p1.pname=pname
时,将调用setter。然而,在二传中你什么也不做。因此,当稍后调用getter时,它不会返回任何内容

要使getter和setter在python中工作,您需要执行以下操作:

class player(object):
    @property
    def pname(self):
        return self._pname

    @pname.setter
    def pname (self, value):
        self._pname = value

编写
p1.pname=pname
时,将调用setter。然而,在二传中你什么也不做。因此,当稍后调用getter时,它不会返回任何内容

要使getter和setter在python中工作,您需要执行以下操作:

class player(object):
    @property
    def pname(self):
        return self._pname

    @pname.setter
    def pname (self, value):
        self._pname = value

非常感谢那些帮助我解决问题的人,我的问题是由于没有按照上面所述正确设置setter/getter,而我的数组位于显示菜单选项中,导致它将类的实例发送到另一个列表

class main:

if __name__ == '__main__':

    playerList = [] 

    while True:

        print("Please Select An Option Below:")
        print("1 - Create Player:")
        print("2 - List Players:")
        print("3 - Create Team:")
        print("4 - Sell Player:")
        print("5 - Buy Player:")
        x = raw_input("Please select a option: \n")

        if(x == '1'):

            import Player
            nplayer = Player.player()
            nplayer.set_name(raw_input("Please Enter A Name\n"))
            playerList.append(nplayer)
            continue

        if(x == '2'):
             for nplayer in playerList:
                 print(nplayer.get_name)
             continue

class player(object):

__name = ""

@property
def get_name(self):
    return self.__name

def set_name(self, name):
    self.__name = name

非常感谢那些帮助我解决问题的人,我的问题是由于没有按照上面所述正确设置setter/getter,而我的数组位于显示菜单选项中,导致它将类的实例发送到另一个列表

class main:

if __name__ == '__main__':

    playerList = [] 

    while True:

        print("Please Select An Option Below:")
        print("1 - Create Player:")
        print("2 - List Players:")
        print("3 - Create Team:")
        print("4 - Sell Player:")
        print("5 - Buy Player:")
        x = raw_input("Please select a option: \n")

        if(x == '1'):

            import Player
            nplayer = Player.player()
            nplayer.set_name(raw_input("Please Enter A Name\n"))
            playerList.append(nplayer)
            continue

        if(x == '2'):
             for nplayer in playerList:
                 print(nplayer.get_name)
             continue

class player(object):

__name = ""

@property
def get_name(self):
    return self.__name

def set_name(self, name):
    self.__name = name

请修正你的缩进。因为
class main:
您的setter是空的,所以您似乎没有在全局范围内运行任何东西。这正常吗?每次显示菜单时,都会将playerList初始化为空列表。因此,在打印出来之前,您将丢弃任何添加的玩家。谢谢,不知何故,我没能发现,请修复您的缩进。因为
class main:
您的setter是空的,所以您似乎没有在全局范围内运行任何东西。这正常吗?每次显示菜单时,都会将playerList初始化为空列表。因此,您可以在打印之前丢弃任何添加的播放器。谢谢,不知何故,我没有发现您好非常感谢您的回复,我已经更新了我的代码以反映您建议的更改(请参阅第一篇文章中更新的代码)。我可以使用setter/getter成功地获取和设置值,但我仍然无法获取“for loop”它输出一个类的特定属性(在本例中是player name)您好非常感谢您的回复,我已经更新了我的代码以反映您建议的更改(请参阅第一篇文章中更新的代码)。我可以使用setter/getter成功地获取和设置一个值,但我仍然无法获取“for loop”“它输出类的特定属性(在本例中为播放器名称)