程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Python根据属性获取类对象名称大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Python根据属性获取类对象名称?

开发过程中遇到Python根据属性获取类对象名称的问题如何解决?下面主要结合日常开发的经验,给出你关于Python根据属性获取类对象名称的解决方法建议,希望对你解决Python根据属性获取类对象名称有所启发或帮助;

例如,如何获取座位 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)

解决方法

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

如果您想跟踪类的所有实例,请参阅:Python: Find Instance of a class by value 和 How to keep track of class instances?

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

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_at_seat() 函数是一个类方法,它返回一个迭代器,其中包含 instances 中所有玩家的 seat 属性设置为给定的 seat 值。然后,您可以遍历迭代器并打印第 3 位玩家的姓名。

,

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

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

for player in player_list:

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

大佬总结

以上是大佬教程为你收集整理的Python根据属性获取类对象名称全部内容,希望文章能够帮你解决Python根据属性获取类对象名称所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: