players_list = [Ani, Paty, Felix, Alex]
class Player:
def __init__(self, name):
self.name = name
self.score = 0
self.vote = 0
self.player_hand = []
self.choice = ''
self.player_hand = []
def player_turn(self):
print(self.name, "'s turn")
def p_vote(self):
print(self.name, " voted")
我尝试遍历该列表,但它总是给我一个错误:NameError: name 'Ani' is not defined
for player in players_list:
player = Player(str(player))
但是手动完成所有过程:
Ani = Player("Ani")
等
有什么办法可以使这个过程自动化?
答案 0 :(得分:2)
首先,您应该知道,已声明的import {Message, IMessage} from "./models";
function serialize(data: object, thriftModel: any): any {
const buffer = Buffer.from(JSON.stringify(data));
const transport = new thrift.TFramedTransport(buffer);
const binary = new thrift.TBinaryProtocol(transport);
thriftModel.write(binary);
// @ts-ignore
return transport.outBuffers;
}
const response: IMessage = {
platform: global.PLATFORM,
chatId: Date.now()+"212",
text: "",
data: "",
user: {
platformUserId: r.userProfile.id+"",
firstName: fullName[0],
lastName: fullName[1],
languageCode: "RU",
username: undefined,
latitude: 40.741895,
longitude: -73.989308,
phoneNumber: undefined
}
};
const message = new Message(response);
//.... kafka import, register a producer, send it in kafka topik
const payloads = [{ topic: 'my_topic', messages: serialize(response, message), key: Date.now()+""}];
producer.send(payloads, (error, data) => { //... });
不包含字符串,它们被视为您在任何地方都未定义的变量,因此players_list
。 / p>
现在,如果您要更正此问题,并且实际上打算将Player的对象存储在NameError
中,则可以执行以下操作:
players_list
这会将Player对象存储在您声明的列表中,只是您希望获得的东西。
答案 1 :(得分:0)
您遇到了无法定义播放器的问题。因此players_list = [Ani, Paty, Felix, Alex]
将引发错误,因为对象Ani
,Paty
,Felizx
和Alex
不存在。
class Player:
def __init__(self, name):
self.name = name
self.score = 0
self.vote = 0
self.player_hand = []
self.choice = ''
self.player_hand = []
def player_turn(self):
print(self.name, "'s turn")
def p_vote(self):
print(self.name, " voted")
现在,我们需要遍历列表。
players_list = ['Ani', 'Paty', 'Felix', 'Alex']
players = [Player(player) for player in players_list]
答案 2 :(得分:0)
听起来像是您试图动态创建变量-写写代码的代码。
您可以尝试使用exec
内置函数。
players = ['Ani', 'Paty', 'Felix', 'Alex']
class Player:
def __init__(self, name):
self.name = name
def p_vote(self):
print(self.name + " voted.")
for player in players:
exec( "%s = Player( '%s' )" %(player, player) )
Ani.p_vote()
尽管如此,一般的互联网建议有两点要指出:
exec
。