[英]replacing objects in list/string using dynamically created substring variables (or loops) using python
[英]Python OOP, using loops to number objects as they are created
我對python問題感到困惑。 我正在編寫一個程序,該程序從Scratch(MIT)接收命令,然后創建一個新對象,在本例中為PiLight。 僅在接收到命令時才需要創建對象,因此不必循環,只需能夠重復執行並在每次執行時增加編號即可。由於以下要求,列表對我不起作用該程序和Scratch之間的對話。 我試圖找出一種構造函數,一旦初始化,就可以打印出類似
class Newpilight:
def __init__(self):
print "Pilight" + pilnumber + " created"
pilnumber對於第一個對象應為1,對於第二個對象應為2,依此類推
從那里我需要創建對象來更改對象名稱中的數字
PiLight(PiLnumber) = Newpilight()
我試着用for循環弄亂了東西,但最后卻弄得更糟
from itertools import count
class NewPilight(object):
nums = count()
def __init__(self):
self.num = self.nums.next()
print "Pilight {self.num} created".format(self=self)
然后在代碼中使用:
>>> pl1 = NewPilight()
Pilight 0 created
>>> pl2 = NewPilight()
Pilight 1 created
>>> pl3 = NewPilight()
Pilight 2 created
>>> pl3.num
2
訣竅是讓nums
(實際上是數字的生成器,而不是數字列表)作為類屬性,而不是類實例的屬性。 這樣,所有類實例都可以全局共享它。
class NewPilight:
def __init__(self, number):
self.number = number
print "Pilight" + number + " created"
for x in range(5):
NewPilight(x)
如果您需要保留物品:
all_pilights = []
for x in range(5):
all_pilights.append( NewPilight(x) )
現在您可以訪問對象
print all_pilights[0].number
print all_pilights[1].number
print all_pilights[2].number
class NewPiLight(object):
global_pilnumber = 0 # Since this is on the class definition, it is static
def __init__(self):
print "Pilight %s created" % NewPiLight.global_pilnumber
self.pilnumber = NewPiLight.global_pilnumber # Set the variable for this instance
NewPiLight.global_pilnumber += 1 # This increments the static variable
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.