2010-07-12 43 views
4

我写在谷歌应用程序引擎db.Model类,看起来是这样的:谷歌应用程序引擎:KindError - 对于那种没有执行“对象名”

class Cheese(db.Model): 
    name = db.StringProperty() 
    def say_cheese(self): 
     return name + "cheese" 

出于某种原因,每当我运行:

cheese = Cheese(name = "smelly") 
print thing.say_cheese() 

我得到一个KindError - 没有实现类的'奶酪'。我想它说:“臭奶酪”

我做错了什么?我不允许将方法添加到db.Model对象吗?

+2

你发布的代码有几个问题:1)'say_cheese'试图访问'name',我认为你的意思是'self.name'。 2)'thing'没有被定义使用。 – 2010-07-12 21:24:16

回答

10

听起来thing实际上是被从db.ReferenceProperty()字段(在非Cheese实体)装入这恰好是指一个Cheese实体。如果您在没有首先导入Cheese模型的情况下访问此类属性,则代码将无法找到构造该实体的Cheese类型,并且会因您指示的错误而失败。

无论如何,请尝试在导致错误的代码中导入Cheese模型。然后,代码应该能够在需要时找到Cheese的实现。

要回答您问题的其他部分:是的,您当然可以将自己的方法添加到db.Model子类中。

+0

酷,它的作品。我还有另一个奇怪的问题,其中两个模块互相交叉输入,但我也修复了这个问题。 – Petwoip 2010-07-14 17:02:09