Flask에서 클래스 메서드를 실행하는 데 문제가 있습니다. models/User.py
에서Python 클래스 메서드가 AttributeError를 throw합니다.
:
from models import User
...
def func():
...
#Throws "AttributeError: type object 'User' has no attribute 'create'"
user = User.create(arg1, arg2, ...)
내가 사용자 개체를 인스턴스화하지 않고 사용자 클래스를 만들 호출 할 수 없을 겁니다 : 기본 응용 프로그램 파이썬 파일에서
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
? 파이썬 2.7.2를 사용하고 있는데 create = classmethod(create)
을 사용하는 데 데코 레이팅되지 않은 구문을 시도했지만 작동하지 않았습니다. 미리 감사드립니다!
EDIT : 모델 폴더에 __init__.py
파일이 없으므로 모듈이 아니므로 from models import User
이 실제로 원하는 파일을 가져 오지 못했습니다. 전에는 응용 프로그램 파이썬 스크립트와 동일한 디렉토리에 models.py
모듈을 가지고 있었기 때문에 이전에는 오류가 없었지만 삭제 후 해당 .pyc
파일을 삭제하지 않았습니다. 자, 이전에 가지고 있던 것 대신에 AttributeError: 'module' object has no attribute 'create'
이라는 오류가 발생했습니다. 그러나 지금은 올바른 파일을 가져 오는 것이 확실합니다.
EDIT2 : 해결. 그런 다음 가져 오기를 from models.User import User
으로 변경했습니다. 이제 메소드가 실행됩니다.
'User (arg1, arg2, ...) : # constructor'이란 무엇입니까? 나는 이것이 유효한 파이썬 구문이라고 생각하지 않는다. –
프로그래밍하기 전에 워드 프로세서를 읽어야합니다! –
실제로 발생하는 문제점을 보여주는 최소한의 완전한 코드 샘플을 게시 해보십시오. 당신이 한 일은 프로세스에서 새로운 오류를 소개하는 코드를 바꾸어 사람들이 당신을 도울 수 없게 만들었습니다. – Duncan