在放棄一個醜陋的bash腳本後,我一直在學習如何在今天更好的部分使用Python。我試圖用2類來定義一些對象的數組來存儲一些獨特的字符串和整數(1-10)。對象將包括以下內容:Python實例沒有__call__方法
object[i].user
.n # n = i
.name
.coords
.hero
(參數1,參數2,參數3)將爲每個object.n和object.user不同,所以我嘗試使用不看的分配方法像寫完90個獨特的字符串之後的垃圾嵌套我發現沒有工作的例子,所以這裏的妥協:
class CityBean:
def __init__(self,name,coords,hero):
self.name = name
self.coords = coords
self.hero = hero
class Castles:
def __init__(self,user,n):
self.user = user
self.n = n
if self.user == 'user1':
temp = {
1: CityBean("name1" , "coord1" , "hero1"),
... blah blah blah
10: CityBean("name10" , "coord10" , "hero10")}[self.n]()
if self.user == 'user2':
temp = {
1: CityBean("name11" , "coord11" , "hero11"),
... blah blah blah
10: CityBean("name20" , "coord20" , "hero20") }[self.n]()
if self.user == 'user3':
temp = {
1: CityBean("name21" , "coord21" , "hero21"),
... blah blah blah
10: CityBean("name30" , "coord30" , "hero30") }[self.n]()
self.name = temp.name
self.coords = temp.coords
self.hero = temp.coords
__del__(temp)
我是這樣叫它:
cities = list(Castles("user2",i) for i in range(1,11))
它給我這個錯誤:
AttributeError: CityBean instance has no __call__ method
它歸咎於這條線:
10: CityBean("name20" , "coord20" , "hero20") }[self.n]() # pseudo
10: CityBean("" , "" , "") }[self.n]() # what is actually looks like
我的糟糕課程出了什麼問題?我正在做一些緩慢的事情,不是嗎?
你有什麼打算實現與'[self.n]()'? – 2010-02-22 11:14:28
我只是想挑選其中的一個選項,沒有意識到括號將結果稱爲函數......哎呀! – tyblu 2010-02-22 11:24:01