【发布时间】:2011-01-23 03:27:30
【问题描述】:
好的,让我尽我所能解释一下。假设我有一个名为 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: unbound method doIt() must be called with Foobar 实例作为第一个参数。
所以看起来我正在获取 Foobar,但不是它的真实实例。任何帮助将不胜感激。我相信我已经充分解释了我的情况,您会看到我正在尝试做的更简单的解决方法,请提出建议。
【问题讨论】:
-
试试
from Foobar import Foobar -
我可能表现不佳,但没有名为 Foobar 的模块,只有一个类
标签: python class attributes module instance