类实例的动态命名

我目前正在写一个申请女巫,将使用同一班级的许多实例.(我希望我能正确理解该术语)
因此,而不是在他们开始时就自己命名自己,而是需要python为我做.
说看起来像这样

选择 | 换行 | 行号
  1. instance = myClass()

当启动新实例时,我希望将其命名为" instance2"下一个" instance3",依此类推.我不能这样做吗?

选择 | 换行 | 行号
  1. instance+cnt = myClass()     # cnt is a variable that holds the number of instances

如何在变量的内容之后命名?
我真的很抱歉,如果这听起来很混乱,如果你们不明白,我会尝试更好地解释它.
谢谢

# 回答1


对于名为" player()"的课程:

选择 | 换行 | 行号
  1. >>> for i in range(5):
  2. ...     exec 'player%d = Player()' % i
  3. ...     
  4. >>> player1
  5. <__main__.Player instance at 0x00F4FF80>
  6. >>> player2
  7. <__main__.Player instance at 0x00F4FDF0>
  8. >>> 
# 回答2


它很简单,不要做.使用列表或字典.
因为您稍后将如何阅读变量?
循环中的试验块或某些内容将起作用.但是,发生的事情是,您需要大约10行代码来完成可以在3-4行代码上以更有效的方式完成的事情. (好的,那是谎言的某个地方,您需要更多的代码来完成,是的.但不是那么多.)

选择 | 换行 | 行号
  1. >>> class myClass:
  2. ...     pass
  3. ... 
  4. >>> dd = {}
  5. >>> for i in range(5):
  6. ...     dd["instance%d" % i] = myClass()
  7. ... 
  8. >>> dd["instance3"]
  9. <__main__.myClass instance at 0xb7cdfcec>
  10. >>> dd["instance2"]
  11. <__main__.myClass instance at 0xb7cdfc6c>
  12. >>> 
  13.  

可以这样做,但是这样做不是那么" Pythonic".

# 回答3


谢谢,这确实帮助了Smygis.
现在,我遇到了另一个问题...
稍后如何在代码中使用其中一个实例?
这有点混乱.我以前曾经以这种方式使用课程,因此可能需要一些时间才能获得新的想法.
# 回答4


我不确定Smygis的想法.您可以创建一个用递增名称作为字典键的实例字典.

选择 | 换行 | 行号
  1. # Create dictionary of Players()
  2. n = 10
  3. dd = {}
  4. for i in range(n):
  5.     dd['player%d' % (i+1)] = Player()
  6.  
  7. print dd['player1'].name
  8. print dd['player1'].score
  9. globals().update(dd)
  10. print player2.name
  11. print player2.score
  12.  
  13. >>> Tom Berry
  14. 394
  15. Dick Smith
  16. 70
  17. >>> 
# 回答5


好吧,这似乎很容易:P
谢谢您的帮助.确实不像我想象的那样难.我将尝试以某种方式将其实施到我的代码中.

标签: python

添加新评论