Python 3.x Python基于属性获取类对象名称

Python 3.x Python基于属性获取类对象名称,python-3.x,class,Python 3.x,Class,例如,如何获得座位3中的玩家姓名?谢谢大家! 注意,我不知道p3在其中 class Player: def __init__(self, name, seat, balance): self.name = name self.seat = seat self.balance = balance dealer = Player('Dealer', 7, 1000) p1 = Player('Player1', 1, 100) p2 = Player('Player2'

例如,如何获得座位3中的玩家姓名?谢谢大家!

注意,我不知道p3在其中

class Player:
  def __init__(self, name, seat, balance):
    self.name = name
    self.seat = seat
    self.balance = balance

dealer = Player('Dealer', 7, 1000)
p1 = Player('Player1', 1, 100)
p2 = Player('Player2', 2, 100)
p3 = Player('Player3', 3, 100)
p4 = Player('Player4', 4, 100)
p5 = Player('Player5', 5, 100)
p6 = Player('Player6', 6, 100)

最简单的方法是将你所有的玩家对象放入一个列表&在列表中循环检查它们的属性

player_list = [p1, p2, p3, p4, p5, p6]

for player in player_list:

    if player.seat == 3:
        print(player.name)

最简单的方法是将你所有的玩家对象放入一个列表&在列表中循环检查它们的属性

player_list = [p1, p2, p3, p4, p5, p6]

for player in player_list:

    if player.seat == 3:
        print(player.name)

我想你不是想只打印姓名
p3.name

如果您想跟踪您的类的所有实例,请参考:和

如果我应用上面引用的两个参考文献中提到的相同逻辑,那么您的代码可能如下所示:

class Player(object):
    # create a class attribute to keep track of all the instances of the class
    instances = []
    def __init__(self, name, seat, balance):
        self.name = name
        self.seat = seat
        self.balance = balance
        Player.instances.append(self)

    # class method to access player instances by seat
    @classmethod
    def get_players_at_seat(cls, seat):
        return (p for p in cls.instances if p.seat == seat)

dealer = Player('Dealer', 7, 1000)
p1 = Player('Player1', 1, 100)
p2 = Player('Player2', 2, 100)
p3 = Player('Player3', 3, 100)
p4 = Player('Player4', 4, 100)
p5 = Player('Player5', 5, 100)
p6 = Player('Player6', 6, 100)

# Get iterator containing all players at seat 3
players_at_seat_3 = Player.get_players_at_seat(3)

# Print their names
for player in players_at_seat_3:
    print(f"{player.name} is sitting at seat 3")

get_players\u at_seat()
函数是一个类方法,它返回一个迭代器,该迭代器包含
实例
中的所有玩家,这些玩家的
seat
属性设置为
seat
的给定值。然后,您可以在迭代器上进行迭代,并打印座位3上的球员姓名。

我想您不是想只打印姓名
p3.name

如果您想跟踪您的类的所有实例,请参考:和

如果我应用上面引用的两个参考文献中提到的相同逻辑,那么您的代码可能如下所示:

class Player(object):
    # create a class attribute to keep track of all the instances of the class
    instances = []
    def __init__(self, name, seat, balance):
        self.name = name
        self.seat = seat
        self.balance = balance
        Player.instances.append(self)

    # class method to access player instances by seat
    @classmethod
    def get_players_at_seat(cls, seat):
        return (p for p in cls.instances if p.seat == seat)

dealer = Player('Dealer', 7, 1000)
p1 = Player('Player1', 1, 100)
p2 = Player('Player2', 2, 100)
p3 = Player('Player3', 3, 100)
p4 = Player('Player4', 4, 100)
p5 = Player('Player5', 5, 100)
p6 = Player('Player6', 6, 100)

# Get iterator containing all players at seat 3
players_at_seat_3 = Player.get_players_at_seat(3)

# Print their names
for player in players_at_seat_3:
    print(f"{player.name} is sitting at seat 3")

get_players\u at_seat()
函数是一个类方法,它返回一个迭代器,该迭代器包含
实例
中的所有玩家,这些玩家的
seat
属性设置为
seat
的给定值。然后,您可以在迭代器上迭代,并打印座位3上的玩家姓名。

您可以将他们放入列表中,根据
.seat
筛选项目,并检查他们的
.name
s。使用现有的代码,不需要额外的内务管理,就没有Python技巧可以获得您想要的内容。您可以制作座椅到对象的地图。这是一种方法。您可以将它们放在一个列表中,并根据
.seat
筛选项目,并检查它们的
.name
s。使用现有的代码,不需要额外的管理,就没有Python技巧可以获得您想要的内容。您可以制作座椅到对象的地图。那将是一种方式。