在放弃一个丑陋的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