我在获取类方法以在 Flask 中运行时遇到问题。
在models/User.py
:
from mongoengine import *
class User(Document):
first_name = StringField()
last_name = StringField()
...
def __init__(self, arg1, arg2, ...):
self.first_name = arg1
self.last_name = arg2
...
@classmethod
def create(self, arg1, arg2, ...):
#do some things like salting and hashing passwords...
user = self(arg1, arg2, ...)
user.save()
return user
在主应用程序 python 文件中:
from models import User
...
def func():
...
#Throws "AttributeError: type object 'User' has no attribute 'create'"
user = User.create(arg1, arg2, ...)
我不应该在不实例化 User 对象的情况下调用 User 类的 create 吗?我正在使用 Python 2.7.2,并且我还尝试了 using 的非装饰器语法create = classmethod(create)
,但这不起作用。提前致谢!
编辑:我发现了一个问题:模型文件夹不包含__init__.py
文件,所以它不是一个模块,所以from models import User
实际上并没有导入我想要的文件。它没有给我以前的错误,因为我曾经models.py
在与应用程序python脚本相同的目录中有一个模块,但是在删除它之后我从未删除过相应的.pyc
文件。现在,我得到的是错误AttributeError: 'module' object has no attribute 'create'
而不是以前的错误,但我确定它现在正在导入正确的文件。
EDIT2:已解决。然后我将导入更改为from models.User import User
它现在正在使用该方法。