Хорошо, позвольте мне попытаться объяснить это в меру своих возможностей.Допустим, у меня есть класс с именем Foobar:
class Foobar():
def __init__(self, foo, bar, choo):
self.foo = foo
self.bar = bar
self.choo = choo
def doIt(self):
return self.foo + self.bar
, и я хочу иметь набор из 10 возможностей экземпляров Foobar, которые я буду использовать в своем приложении.Теперь мой конечный пользователь не знает и не заботится о значениях foo, bar и choo, но хотел бы выбрать одну из 10 возможностей, которые я обозначу.
Так что я хотел бы сохранить их выбор в БД (но я хочу только сохранить метку, которая представляет конкретный экземпляр класса Foobar).Таким образом, я могу просто взять нужный мне экземпляр.
Итак, я попытался настроить все свои экземпляры в модуле следующим образом (давайте назовем его «my_instances.py»)
import Foobar
label_one = Foobar("eenie", "meenie", "miney")
label_two = Foobar("teeny", "toony", "tiny")
...
label_ten = Foobar("biggie", "boogie", "baggie")
и таким образом, когда у меня есть строка из базы данных, которая представляет их выбор, я могу получить этот экземпляр примерно так (я игнорирую, как вы получите строку, но показываю, как я получаю экземпляр).
import my_instances
my_object = getattr(my_instances, 'label_one')
result = my_object.doIt()
Я получаю TypeError: необязательный метод doIt () должен быть вызван с экземпляром Foobar в качестве первого аргумента.
Похоже, я получаю Foobar, но это не настоящий экземпляр.Любая помощь будет принята с благодарностью.Мне кажется, я достаточно подробно объяснил свой сценарий, так что вы видите более простой обход того, что я пытаюсь сделать, предложите его.