我读了两篇关于python中元类的文章:
Python 中的元类是什么? http://jakevdp.github.io/blog/2012/12/01/a-primer-on-python-metaclasses/
我阅读了有关 ABC(抽象基类)的信息,该信息显示在:
https://docs.python.org/2/library/abc.html。
所以我不得不问:元类和抽象基类(ABC)有什么区别?
据我所知,我可以使用两者来定义元类(元类)的类创建。
我会出于什么目的使用 ABC 或“我自己的”元类?
我刚刚开始一个名为flask_wiki的简单项目,我正在使用一些烧瓶扩展,如下所示:
好吧,我刚刚发现MarshMallow项目提供了一个名为'ModelSchema'的类,它从我的SQLAlchemy Model中读取所有字段并提供一个完全自动化(de)的序列化器.
在我的例子中,我创建了一个"GUID"字段,它与RDBM无关,并将其插入我的Sqlalchemy模型,如下所示:
from flask.ext.sqlalchemy import SQLAlchemy
from flask_wiki.backend.custom_fields import GUIDField
class Page(db.Model):
"""
Implements the Page Model.
"""
guid = db.Column(GUIDField, primary_key=True, default=uuid.uuid4)
name = db.Column(db.String, nullable=False)
raw_content = db.Column(db.Text)
rendered_content = db.Column(db.Text)
def __repr__(self):
return self.__str__()
def __str__(self):
return self.name
Run Code Online (Sandbox Code Playgroud)
GUIDField以这种方式实现:
from sqlalchemy.types import TypeDecorator, CHAR
import uuid
class GUIDField(TypeDecorator):
# Platform independent GUID Implementation that uses little endianess.
impl = CHAR
def load_dialect_impl(self, dialect):
return dialect.type_descriptor(CHAR(32))
def process_bind_param(self, value, dialect):
if value is …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Moodle Webservices - Rest Server 创建一个用户,但我陷入了参数验证:S 我的代码如下:
\n\nimport requests\n\ntoken = \'TOKENNUMBER\'\nfunction = \'core_user_create_users\'\n\n\nurl = \'http://localhost/webservice/rest/server.php?wstoken={0}&wsfunction={1}&moodlewsformat=json\'.format(token,function)\n\nuser1 = {\'email\': \'email@local.host\',\'firstname\': \'firstname\',\n\'lastname\': \'lastname\', \'createpassword\': 1,\n\'username\': \'username\'}\nRun Code Online (Sandbox Code Playgroud)\n\n然后,我尝试发布数据(两种不同的方式):
\n\nrequests.post(url,data={\'users\': user1})\nrequests.post(url,data={\'users\': [user1,]})\nRun Code Online (Sandbox Code Playgroud)\n\nMoodle 保持返回错误:
\n\nOnly arrays accepted. The bad value is: \\\'username\\\'</DEBUGINFO>\nRun Code Online (Sandbox Code Playgroud)\n\n在文档(可从自己的moodle获取)中,它指出:
\n\nArgumentos\nusers (Obrigat\xc3\xb3rio)\n\n\nEstrutura geral\n\nlist of ( \nobject {\nusername string //Username policy is defined in Moodle security config.\npassword string Opcional //Plain text password consisting of any characters\ncreatepassword int Opcional //True if password should be created and …Run Code Online (Sandbox Code Playgroud)