簡體   English   中英

Python迭代一個類對象列表並提取一個值

[英]Python iterate through a list of class objects and extract a value

你好我試圖迭代一個類列表,以打印出該類的實例所持有的特定值有一些麻煩。我的程序編譯,但它沒有打印任何東西,我也嘗試過“播放器播放器列表中的播放器“在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

----更新-----

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
                nplayer = Player.player()
                nplayer.set_name(raw_input("test\n"))
                playerList.append(nplayer)
                continue

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

class player(object):

    __name = ""

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

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

當你寫p1.pname = pname ,會調用setter。 但是,您不會在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM