Я изучал, как использовать Python для лучшей части сегодняшнего дня после отказа от уродливого скрипта bash.
Я пытаюсь использовать 2 класса, чтобы определить несколько массивов объектов, в которых будут храниться некоторые уникальные строки и целые числа (1-10). Объекты будут состоять из следующего:
object[i].user
.n # n = i
.name
.coords
.hero
(param1, param2, param3) будет разным для каждого 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
Что не так с моими грубыми классами? Я делаю что-то отсталое, не так ли?