Metaclasses
1、Metaclasses
Metaclasses是创建class(对象)的东西,它们是描述类的类,我们经常使用所理解的对象和class以及Metaclasses可以理解成以下形式:
MyClass = MetaClass()
MyObject = MyClass()
2、django模型类中的内部类meta
django模型类中的meta是一个内部类,它用于定义一些模型类的行为特征,用于设置类的元信息
定义方式如下:
class Student(models.Model):
...... #模型类的属性相关定义
class Meta:
...... # Meta类的属性
3、Meta类的部分属性
(1)abstract
abstract属性定义当前的模型类是否为一个抽象类,在django模型类中一个类对应一张数据库表,而模型类中定义Meta类的abstract属性为True时,当前模型类即为一个抽象类,抽象类不会有数据库表,一般用它来归纳一些公共属性字段,继承该类的子类能够继承这些字段
class Student(models.Model):
...... #模型类的属性相关定义
class Meta:
abstract=True
(2)db_table
db_table指明该模型类对应的数据库表的名字,默认为应用名小写_类名小写
class Student(models.Model):
...... #模型类的属性相关定义
class Meta:
db_table='student'
(3)ordering
对象的默认排序字段
class Student(models.Model):
...... #模型类的属性相关定义
class Meta:
ordering=["id"] #按id升序
ordering=["-id"] #按id降序
注意:排序会增加数据库的开销,相当于添加了order by
Metaclasses的更多相关文章
- Understanding Python metaclasses
转载:https://blog.ionelmc.ro/2015/02/09/understanding-python-metaclasses/ None of the existing article ...
- Python type类具体的三大分类:metaclasses,classes,instance
Python type类视角中的对象体系需要我们不断的学习,其中我们使用的时候需要注意.下面我们就看看如何才能更好的运用Python type类.下面的文章希望大家有所收获. 在单纯的Python t ...
- python类:描述器Descriptors和元类MetaClasses
http://blog.csdn.net/pipisorry/article/details/50444769 描述器(Descriptors) 描述器决定了对象属性是如何被访问的.描述器的作用是定制 ...
- Python高级特性(3): Classes和Metaclasses(转)
原文:Python高级特性(3): Classes和Metaclasses 类和对象 类和函数一样都是Python中的对象.当一个类定义完成之后,Python将创建一个“类对象”并将其赋值给一个同名变 ...
- Python metaclasses
metaclasses元类:就像对象是类的实例一样,类是它的元类的实例.调用元类可以创建类. metaclass使用type来创建类,type可以被继承生成新的元类. 这个和C#的反射很相似. 下面是 ...
- Classes and metaclasses
http://www.sealiesoftware.com/blog/archive/2009/04/14/objc_explain_Classes_and_metaclasses.html Obje ...
- Python 元类 - Metaclasses
Python 元类 - Metaclasses 默认情况下儿, classes 是有 type() 构造的. 类的结构体在一个新的 namespace 被执行, 类的名字 class name 绑定( ...
- Python——五分钟理解元类(metaclasses)
“元类的魔幻变化比 99% 的用户所担心的更多,当你搞不懂是否真的需要用它的时候,就是不需要.” —Tim Peters 本文源于在 PyCon UK 2008 上的一个快速演讲. 元类被称为 Pyt ...
- 成为OpenStack工程师
OpenStack Hacker 态度:开放.主动.沟通 影响力:能说.能写.能分享 四化:自动化.流程化.系统化.文档化 0级 掌握一些基本技能:python.c.linux.git.unittes ...
随机推荐
- 每天一点Linux系列之—vim
- 为什么使用zookeeper?
随着应用规模的迅速扩张,单台机器的部署已经难以支撑用户大规模.高并发的请求了, 因此服务化.集群化.分布式概念应运而生. 针对这种场景,人们通常使用的做法就是将软件按照模块进行拆分,形成独立的子系统, ...
- git 合并分支到master
git 合并分支到master 假如我们现在在dev分支上,刚开发完项目,执行了下列命令 git add .git commit -m ‘dev'git push -u origin dev 然后 ...
- shell脚本定义输出字符颜色
#-------------------定义输入颜色---------------------# RED='\033[1;31m' GREEN='\033[1;32m' YELLOW='\033[1; ...
- 黑客常用dos-cmd命令
黑客常用命令大全net user heibai lovechina /add 加一个heibai的用户密码为lovechina net localgroup Administrators heibai ...
- header头参数 确定该文件类型
'chm'=>'application/octet-stream', 'ppt'=>'application/vnd.ms-powerpoint', 'xls'=>'applicat ...
- React Native 获取组件(Component)在屏幕上的位置
年后主客户端的需求以及老的业务迁移RN,现在疯狂的在学RN.在迁移需求的时候遇到需要获取组件在屏幕上的绝对位置.页面如下: 就需要展开的时候获取sectionHeader(默认排序)在屏幕上的具体位置 ...
- 各组对本组——《BBW》软件开发意见的汇总
本来我们是想要做一款关于取快递的软件“快递来了”的. 但是因为我们班也有其他组在做类似的项目,并且根据我们的市场需求调查报告,87%的人都不会选择本软件让别人去取快递.所以经过我们讨论决定,我们修改了 ...
- MYSQL HA 部署手册
1 MySQL启用主主双写复制 1.1 卸载系统默认的数据库mariadb 安装mysql出现安装包不兼容问题,首先卸载掉系统自带mariadb 查看已经安装的mariadb rpm -qa|grep ...
- Sqlite 参数化 模糊查询 解决方案
转自:https://codedefault.com/2018/does-dapper-support-the-like-operator-in-csharp-application 问题描述 如题, ...