我目前正在写一个申请女巫,将使用同一班级的许多实例.(我希望我能正确理解该术语)
因此,而不是在他们开始时就自己命名自己,而是需要python为我做.
说看起来像这样
当启动新实例时,我希望将其命名为" instance2"下一个" instance3",依此类推.我不能这样做吗?
- instance+cnt = myClass() # cnt is a variable that holds the number of instances
如何在变量的内容之后命名?
我真的很抱歉,如果这听起来很混乱,如果你们不明白,我会尝试更好地解释它.
谢谢
# 回答1
对于名为" player()"的课程:
- >>> for i in range(5):
- ... exec 'player%d = Player()' % i
- ...
- >>> player1
- <__main__.Player instance at 0x00F4FF80>
- >>> player2
- <__main__.Player instance at 0x00F4FDF0>
- >>>
# 回答2
它很简单,不要做.使用列表或字典.
因为您稍后将如何阅读变量?
循环中的试验块或某些内容将起作用.但是,发生的事情是,您需要大约10行代码来完成可以在3-4行代码上以更有效的方式完成的事情. (好的,那是谎言的某个地方,您需要更多的代码来完成,是的.但不是那么多.)
- >>> class myClass:
- ... pass
- ...
- >>> dd = {}
- >>> for i in range(5):
- ... dd["instance%d" % i] = myClass()
- ...
- >>> dd["instance3"]
- <__main__.myClass instance at 0xb7cdfcec>
- >>> dd["instance2"]
- <__main__.myClass instance at 0xb7cdfc6c>
- >>>
-
可以这样做,但是这样做不是那么" Pythonic".
# 回答3
谢谢,这确实帮助了Smygis.
现在,我遇到了另一个问题...
稍后如何在代码中使用其中一个实例?
这有点混乱.我以前曾经以这种方式使用课程,因此可能需要一些时间才能获得新的想法.
# 回答4
我不确定Smygis的想法.您可以创建一个用递增名称作为字典键的实例字典.
- # Create dictionary of Players()
- n = 10
- dd = {}
- for i in range(n):
- dd['player%d' % (i+1)] = Player()
-
- print dd['player1'].name
- print dd['player1'].score
- globals().update(dd)
- print player2.name
- print player2.score
-
- >>> Tom Berry
- 394
- Dick Smith
- 70
- >>>
# 回答5
好吧,这似乎很容易:P
谢谢您的帮助.确实不像我想象的那样难.我将尝试以某种方式将其实施到我的代码中.