我想讓我的用戶類與BaseModel和FlaskView一起工作。這導致了元類衝突錯誤,我無法解決它。燒瓶 - 優雅和peewee,元類衝突錯誤
事情我試圖來解決這個問題:
這並沒有因爲從noconflict進口classmaker工作。這個例子是從2003年6月開始的。也許它太老了?我在python 2.7.3上運行。
http://code.activestate.com/recipes/204197-solving-the-metaclass-conflict/
也試過這個解決方案,看下面的代碼塊。 我得到這個錯誤:AttributeError的:對象類型 'BaseModel' 有沒有屬性 '元類'
Double inheritance causes metaclass conflict
from base_model import BaseModel
from flask.ext.classy import FlaskView
class CombinedMeta(BaseModel.__metaclass__, FlaskView.__metaclass__):
pass
from peewee import *
#sqlite is used for easy testing.
mysql_db = SqliteDatabase('test.db')
class BaseModel(Model):
class Meta:
database = mysql_db
from combined_meta import CombinedMeta
from base_model import BaseModel
from flask.ext.classy import FlaskView
from flask.ext.classy import route
from peewee import *
from flask import request
from utility import response_json
from utility import send_email
from utility import random_string
class User(BaseModel, FlaskView):
__metaclass__ = CombinedMeta
@route('/<username>', methods=['GET'])
def read_user(self, username):
#cool method stuff
當我改變BaseModel類到下面的代碼我得到一個新的錯誤。
類BaseModel(模型): 類型錯誤:錯誤調用元類基礎 當這個構造函數沒有參數
from peewee import *
#sqlite is used for easy testing.
mysql_db = SqliteDatabase('test.db')
class BaseModel(Model):
class Meta:
database = mysql_db
__metaclass__ = Meta
我不知道我怎麼能解決這個問題,我是新來的Python。 我的主要目標是讓程序使用多個類。這就是爲什麼我試圖讓燒瓶優雅的工作。
解決這個問題的方法沒有燒瓶優雅和其他任何修補程序一樣受歡迎。如果不使用瓶子,優雅更容易,我會試一試。
編輯
When calling the metaclass bases, object.__init__() takes no parameters
class Meta(type):
database = mysql_db
當我的代碼更改爲這我得到以下錯誤:
類型錯誤:錯誤調用元類基礎元類衝突時:一個派生類的元類必須是所有基類元類的(非嚴格)子類