[英]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.