首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

django 1.8 官方文档翻译: 2-1-1 模型语法(初稿)

Meta 继承 创建抽象时候,Django 会将你在中所声明有效 Meta 内嵌做为一个属性。如果子类没有声明它自己 Meta 内嵌,它就会继承 Meta 。...这意味着抽象子类不会自动变成抽象。当然,你可以让一个抽象继承另一个抽象,不过每次都要显式地设置 abstract=True 。...但在抽象这样做就会引发一个很严重问题。因为 Django 会将字段添加到每个子类当中,而每个子类字段属性值都完全相同 (这里面就包括 related_name)。...限制 代理 model 必须继承一个非抽象。你不能继承自多个非抽象,这是因为一个代理 model 不能连接不同数据表。...代理 model 也可以继承任意多个抽象前提是它们没有定义任何 model 字段。 代理 model 从非抽象继承那些未在代理 model 定义 Meta 选项。

3.1K30

django 1.8 官方文档翻译:2-1-1 模型语法

最后,如果你只是想改变模块Python 级别的行为,而不用修改模型字段,你可以使用代理模型抽象 当你想将一些常见信息存储到很多model时候,抽象是十分有用。...这意味着抽象子类不会自动变成抽象。 当然,你可以让一个抽象继承另一个抽象,不过每次都要显式地设置 abstract=True。...但在抽象这样做就会引发一个很严重问题。因为 Django 会将字段添加到每个子类当中,而每个子类字段属性值都完全相同 (这里面就包括related_name)。...限制 代理 模型必须继承一个非抽象。 你不能继承自多个非抽象,这是因为一个代理 model 不能连接不同数据表。...代理 model 也可以继承任意多个抽象前提是它们没有 定义任何 model 字段。 代理模型管理器 如果你没有在代理 模型中定义任何 管理器 ,代理模型就会从父继承 管理器 。

4.9K20
您找到你想要的搜索结果了吗?
是的
没有找到

Django 模型继承 BaseModel

常见情况下,你仅将父用于子类公共信息载体,因为你不会想在每个子类中把这些代码都敲一遍。这样永远都不会单独使用,所以 抽象 是你需要。...从抽象继承字段可被其它字段或值重写,或用 None 删除。 对很多用户来说,这种继承可能就是你想要。它提供了一种在 Python 级抽出公共信息方法,仍会在子类模型中创建数据表。...这意味着抽象子类不会自动地变成抽象。为了继承一个抽象创建另一个抽象,你需要在子类显式地设置 abstract=True。 抽象某些 Meta 属性对子类是没用。...'%(class)s' 用使用了该字段子类小写名替换。 '%(app_label)s' 用小写包含子类应用名替换。每个安装应用名必须是唯一,应用内每个模型名也必须是唯一。...不存在什么方法能在你创建完代理后,帮你替换所有 Person (或其它)模型约束¶ 一个代理模型必须继承一个非抽象模型

2K10

再谈 Python 中继承(译)

和实例命名空间混淆。如果你在一个继承一个或多个中有一个属性 self.x,那么你就需要研究并耗费脑力来找出 x 来源。阅读代码时如此,调试时也如此。...请注意,不是每个抽象都是抽象数据类型。有时它只是一个不完整,你应该通过继承它并实现其抽象方法来完成它——而不是一个接口。不过,这种区别并不总是百分百清晰。...---- 使用 ABC 定义接口一个「好处」是,通过继承它们,你可以在抽象中添加普通方法来偷渡到代码共享。正如一开始提到:混合子类类型是个坏主意。...和所有类型继承一样,代码可读性会受到影响,因为你必须在头脑中组装出最终,才能知道存在哪些字段实际你得到是与第一种方法相同。...这意味着提供了一个整体控制流程,而子类则填补了一些细节: 用户实例化一个子类, 然后调用方法, 其中又调用了子类方法。

22050

00x: Django models.Model详解

还是直接作为实例,拥有自己数据表?以下是三种最常用继承模式: 通常情况下,我们只想使用父来保存一些你不想在每个子类中都敲一遍通用信息。该类不会真正对数据库操作,也就是所谓抽象。...最后,如果你只是想要修改Python语言级别的model行为而不修改models字段,你可以使用Proxy models。 抽象 抽象在你想要在你模型中加入一些信息时候很有用。...Meta继承 当一个抽象被创建时候,Django会声明一些Meta 内部类,若子类没有声明它自己Meta,它就会继承父Meta。...如果子类想要拓展父Meta,需要先继承,再拓展: Django对于抽象Meta做了调整:在使用Meta属性时候,会设置abstract=False 。...这意味着抽象子类不会自动变成抽象,除非你自己手动将其设置为True,让其成为抽象

1.6K20

Java编程思想精粹(On Java8)(十)-接口

你不可能总是使用纯粹接口。 1 抽象 创建通用接口唯一理由是,不同子类可以用不同方式表示此接口。通用接口建立了一个基本形式,以此表达所有派生共同部分。...Java 在设计之初,C++ 继承机制饱受诟病。Java 过去是一种严格要求单继承语言:只能继承一个(或抽象),但可以实现任意多个接口。...子类并不要求必须继承abstract或“具体”(没有任何抽象方法)。如果继承一个非接口,那么只能继承一个,其余基元素必须都是接口。...这带来了一个问题:应该使用接口还是抽象呢? 如果创建不带任何方法定义或成员变量,就选择接口而不是抽象。事实,如果知道某事物是一个,可以考虑用接口实现它。...因为字段是 static ,所以它们在第一次被加载时初始化,这发生在任何字段首次被访问时。 这些字段不是接口一部分,它们值被存储在接口静态存储区域中。

41820

Java编程思想精粹(九)-接口

毕竟你不可能总是使用纯粹接口。 1 抽象 创建通用接口唯一理由是,不同子类可以用不同方式表示此接口。通用接口建立了一个基本形式,以此表达所有派生共同部分。...Java 在设计之初,C++ 继承机制饱受诟病。Java 过去是一种严格要求单继承语言:只能继承一个(或抽象),但可以实现任意多个接口。...子类并不要求必须继承abstract或“具体”(没有任何抽象方法)。如果继承一个非接口,那么只能继承一个,其余基元素必须都是接口。...这带来了一个问题:应该使用接口还是抽象呢? 如果创建不带任何方法定义或成员变量,就选择接口而不是抽象。事实,如果知道某事物是一个,可以考虑用接口实现它。...因为字段是 static ,所以它们在第一次被加载时初始化,这发生在任何字段首次被访问时。 这些字段不是接口一部分,它们值被存储在接口静态存储区域中。

49921

.NET面试题解析(04)-类型、方法与继承

继承中new和override相同点和区别?看下面的代码,有一个A,B1和B2都继承A,并且使用不同方式改变了父方法Print()行为。测试代码输出什么?为什么?...,上面的代码中,定义两个简单,一个A,,B1和B2继承A,然后使用不同方式改变了父方法行为。...继承是可传递子类是对父扩展,必须继承方法,同时可以添加新方法。 子类可以调用父方法和字段,而父不能调用子类方法和字段。 ...基本是的,所有值类型和引用类型都继承System.Object,接口是一个特殊类型,不继承System.Object。 2....重载:当包含两个名称相同签名不同(方法名相同,参数列表不相同)方法时发生方法重载。用方法重载来提供在语义完成相同而功能不同方法。

51930

.NET 面试题汇总(带答案)

答:尽可能用约束(包括CHECK、主键、唯一键、外键、非空字段)实现,这种方式效率最好;其次用触发器,这种方式可以保证无论何种业务系统访问数据库都能维持数据库完整性、一致性;最后再考虑用写业务逻辑实现...答:结构与共享几乎所有相同语法,结构比受到限制更多:尽管结构静态字段可以初始化,结构实例字段声明还是不能使用初始值设定项。   ...实际,编译器通过为所有字段赋予默认值(参见默认值表)来实现默认构造函数。   结构不能从或其他结构继承。   ...同:接口、和结构可从多个接口继承。     接口类似于抽象继承接口任何非抽象类型都必须实现接口所有成员。     接口可以包含事件、索引器、方法和属性。...35.接口是否可以继承接口?抽象是否可以实现接口?抽象是否可以继承实体

1.2K30

.NET面试题解析(04)-类型、方法与继承

看下面的代码,有一个A,B1和B2都继承A,并且使用不同方式改变了父方法Print()行为。测试代码输出什么?为什么?...,上面的代码中,定义两个简单,一个A,,B1和B2继承A,然后使用不同方式改变了父方法行为。...继承是可传递子类是对父扩展,必须继承方法,同时可以添加新方法。 子类可以调用父方法和字段,而父不能调用子类方法和字段。 ...基本是的,所有值类型和引用类型都继承System.Object,接口是一个特殊类型,不继承System.Object。 2....重载:当包含两个名称相同签名不同(方法名相同,参数列表不相同)方法时发生方法重载。用方法重载来提供在语义完成相同而功能不同方法。

51520

YII模型

通常一个模型包括数据属性,可能还会有不同标签(有些是为了显示给用户时更友好),并且可以设置一些规则进行验证模型数据可能来自数据库表或一个表单用户输入域。...Yii 实现了两种模型:表单模型(CFormModel )和 Active Record 模型(CActiveRecord )。他们都继承同一个 CModel。...CFormModel 代表数据模型是从 HTML 表单中收集输入,它封装了所有逻辑,如表单验证和其他业务逻辑,这些是要应用到表单。...在 Yii 中,每一个 AR 对象实例可以是 CActiveRecord 或它子类,它包装了数据库表或视图中一行记录,并封装了所有逻辑和访问数据库细节,如果有大部份业务逻辑,则必须使用这种模型...数据库表中一行每列字段值对应 AR 对象一个属性。

74020

.NET、C#基础知识

重载和重写区别: 重载:方法名相同参数个数和参数类型不同 重写:当子类继承子类方法与父方法名,参数类型和参数个数完全相同则称为子类重写了父方法(需要一override字标示)(对成员...而抽象中可以有方法实现,也可以定义非静态变量。 抽象,所以只能被单继承,但是接口却可以一次实现多个。 抽象可以提供某些方法部分实现,接口不可以.抽象实例是它子类给出。...,定义里可不加virtual关键字,函数声明要和完全一致!...如何在C#中实现继承? 在名后加上一个冒号,再加上名称。 私有成员会被继承么? 会,但是不能被访问。所以看上去他们似乎是不能被继承实际确实被继承了。...运算符(创建对象,创建值类型默认构造函数) 修饰作用(隐藏继承对象,子类对象覆盖版本) string是值类型还是引用类型?

1.5K10

TypeScript 官方手册翻译计划【十二】:

通常情况下,最好将索引数据存储在另一个位置,而不是实例本身。 继承 和其它面向对象语言一样,JavaScript 中可以继承。...常见错误是认为 implements 子句会改变类型 —— 实际是不会!...extends 子句 可以继承某个。派生拥有所有属性和方法,同时也可以定义额外成员。...因此,在进行诸如单元测试这样操作时,访问私有字段会比较容易,缺点就是这些字段是“弱私有的”,无法保证严格意义私有性。...抽象方法或者抽象字段中没有对应实现。这些成员必须存在于一个无法直接被实例化抽象中。 抽象角色是充当一个,让其子类去实现所有的抽象成员。

2.5K10

C#基础知识复习

4) 结构中不能有实例字段初始值设定,没有任何限制。 5) 构造函数里面可以不用对所有字段进行初始化;结构构造函数里面必须对所有字段进行初始化。... protected internal :内部受保护,同一个程序集里面的任何位置,或者不同程序集中派生可以访问。 备注: 父 子类=派生 面向对象三大特征是什么?...不同点: ----单继承,多接口  抽象也是,具有共同特点:单继承,多接口实现;接口不是,只能继承多个接口。...方法override和overload有什么区别?  重写(override):子类虚成员(虚方法、虚属性等)或抽象成员(抽象方法、抽象属性等)进行覆盖,重新实现。...ASP.NET中所有自定义用户控件都必须继承哪一个?页面必须继承哪一个?  用户控件:System.Web.UI.UserControl。

6K10

深入理解Java加载机制

常见生成这 4 条指令场景是:使用 new 关键字实例化对象时候;读取或设置一个静态字段(被 final 修饰、已在编译期把结果放入常量池静态字段除外)时候;以及调用一个静态方法时候...除此之外,所有引用方式都不会触发初始化,称为被动引用。被动引用常见例子包括: 通过子类引用父静态字段,不会导致子类初始化。...该过程会对数组进行初始化,数组是一个由虚拟机自动生成、直接继承 Object 子类,其中包含了数组属性和方法。...,这些由 Java 实现,独立于虚拟机外部,并且全都继承抽象 java.lang.ClassLoader。...FileSystemClassLoader 是自定义加载器,继承 java.lang.ClassLoader,用于加载文件系统

40930

JVM--加载

元数据验证: 对字节码描述信息进行语义分析,保证其描述信息符合Java语言规范: 这个是否有父; 这个是否继承了不被允许继承(final); 如果这个不是抽象,是否实现了其父和接口中要求所有方法...符号引用验证: 最后一个阶段发生在虚拟机将符号引用转化为直接引用时候,这个转化动作在解析阶段发生。符号引用验证可以看作是对自身以外(常量池中各种符号引用)信息进行匹配性校验。...其他加载器:由Java语言实现,继承抽象ClassLoader。...这里父子关系一般使用组合实现而不是继承。 ? 双亲委派模型工作模式是:如果一个加载器收到了加载请求,它首先不会自己去加载这个,而是把这个请求委派给自己来完成。...因此所有的加载请求都会传递到顶层启动加载器中。只有在父加载器无法加载时,才会由子类加载器加载。 双亲委派模型好处是所有加载器都有了一种层次关系。

35620

JavaScript 中 SOLID 原则

如果我们有一个继承“Car““Passenger Car”, 或者有一个“SUV”继承“Car“,如果我们把“Car”替换成“SUV”或者“Passenger Car”,即把父Car替换成任何一个子类后...虽然两者不一样,但是这个原则可以应用到JS。 对于JS来说,这个原则是指当我们创建一个基础,需要在其中定义所有子类都会用到方法,并且避免只有部分子类会用到方法。...其他两个也是使用同样处理方式,Car重写了fly和sail,ship重写了fly。 所以问题在于:我们创建包含方法,有的子类可以使用,其他子类不能。...一个在应用其他地方已经开始使用,就不应该再修改它。 3、里氏替换原则(LSP):派生子类应该是可替换,也就是说任何可以出现地方,都可以被子类替换。...值得注意是,当通过继承实现多态行为时,如果派生没有遵守LSP,可能会让系统引发异常。 4、接口隔离原则(ISP):不应该包含他们子类不使用方法,也就是说一个接口应该拥有尽可能少行为。

38620

流畅 Python 第二版(GPT 重译)(十三)

装饰器也是函数,设计用于检查、更改甚至替换装饰为另一个。最后,元元编程最高级工具:它们让你创建具有特殊特性全新类别的,例如我们已经看到抽象。...object和ABCMeta都是type实例,这里关键关系是ABCMeta也是type子类,因为ABCMeta是一个元。 在这个图表中,Iterable是唯一抽象。...,继承 type。...编写自己PersistentABCMeta元,作为abc.ABCMeta和PersistentMeta子类,使用多重继承,并将其作为Record唯一。...¹⁶ 如果您考虑到使用元多重继承影响而感到头晕,那很好。我也会远离这个解决方案。 ¹⁷ 在决定研究 Django 模型字段是如何实现之前,我靠写 Django 代码谋生几年。

9910

面银行软开,我最自信了!!

抽象和接口区别? 相同点: 都不能被实例化,接口实现抽象子类都只有实现了接口或抽象方法后才能实例化。...不同点: 实现方式:实现接口关键字为implements,继承抽象关键字为extends。一个可以实现多个接口,一个只能继承一个抽象。所以,使用接口可以间接地实现多重继承。...代码题 用两个栈实现队列 十进制转二进制 交通银行 说一下主键和索引 主键是用于唯一标识数据库表中每一行数据字段字段组合。它具有以下特点: 主键必须是唯一,每一行数据都必须具有唯一主键值。...可以根据需要自由组合这些数字来设置文件或目录权限。 解释一下c++继承、封装、多态。 继承:C++中继承允许一个(派生/子类)从另一个/父继承属性和方法。...派生可以通过继承来扩展和重用代码。在C++中,派生可以通过关键字"public"、"protected"或"private"来指定继承方式和访问权限。

16810

派生多态虚函数?

成员函数与继承派生可以继承成员, 然而有时候派生必须对其重新定义。派生需要对这些操作提供自己新定义以覆盖从继承而来旧定义。...成员函数如果没被声明为虚函数,则其解析过程发生在编译时而非运行时。就会按照实际情况调用。 派生可以继承定义在成员,但是派生成员函数不一定有权访问从继承而来成员。...此外,我们能将公有派生类型对象绑定到引用或指针。 大多数都只继承一个,这种形式继承被称作“单继承”。 派生虚函数派生类经常(但不总是)覆盖它继承虚函数。...func() = 0; 抽象无法实例化对象(堆区,栈区) 子类也必须要重写父虚函数,否则子类也就是抽象 具体代码示意如下所示 #include using namespace...void func() = 0; /* 抽象无法实例化对象(堆区,栈区) 子类也必须要重写父虚函数,否则子类也就是抽象 */ virtual ~base()

14720
领券