我想將一個列表定義爲類內的實例變量,但它充當類變量。Python類實例與類變量
class THING:
def __init__(self, name, stuff):
self.name = name
self.dict = []
for item in stuff:
self.dict.append(item)
def getname(self):
return self.name
def getlist(self):
return self.dict
def inc_datecnt(self,date):
for item in self.dict:
if item.has_key(date):
item[date] += 1
list = []
dates=['July1,2015', 'July2,2015', 'July3,2015']
datecnts = []
for date in dates:
datecnts.append({date : 0})
list.append(THING('A', datecnts))
list.append(THING('B', datecnts))
for item in list:
print "\n", item.getname()
item.inc_datecnt('July1,2015')
for subitem in item.getlist():
print subitem
當我執行此我得到:
A
{'July1,2015': 1}
{'July2,2015': 0}
{'July3,2015': 0}
B
{'July1,2015': 2}
{'July2,2015': 0}
{'July3,2015': 0}
我似乎增加一個類字典元素July1,2015當我想(和期望)是增加一個實例變量。
幫助
你重用'datecnts'構建THING'的'的兩個實例,並且當你創建了一個新的列表中的'dict'內兩者之間的相同。 – metatoaster
也許你可以打印類型(項目),以確保對象是THING,而不是dict – ytpillai
Python並不完全有辦法打印出來,所以如果你需要做一個'def __str __(self)'只想打印出變量 – ytpillai