教程中的元类内容没有看懂
来源:8-7 通过元类实现orm-2

qq_走过的路_4
2019-05-26
本人愚钝,教程中的元类内容没有看懂。我理解的元类是生成类的类,是类的模板。而元类的关键特性就是可以动态的,根据程序运行时的变量修改类的模板(元类),来达到非常灵活的生成类的目的。普通类是写死的,而元类(类的模板)是可以动态修改的。不知道我理解的是不是错了。
写回答
1回答
-
你这里的理解大致是正确的, 其实使用orm来理解会很容易, 因为定义一个类很容易而且很清晰,主要包含两部分:
class Course(models.Model): name = CharField() name = CharField() class Meta: table_name = "course"
以上面这段代码来理解,用起来爽,因为结构非常清晰,只有两个部分:1. 定义field的代码块和meta的代码块
但是使用起来我们却需要model非常强大,比如我们想要知道总共有哪些列,如果没有元类的话,我们就需要在这里定义很多方法或者使用到大量的python反射机制才能得知很多信息,但是我们使用的时候却发现很多细节都不用去自己写,因为model都已经帮我们做到了,但是对于类的机制来说,这个类怎么做到呢?就是使用元类在实例化这个类的时候就以自己需要的方式重新类的属性,比如这个类实例我们需要一个fileds用于存放所有的field, 如果没有元类,只有类的话 这些做起来是很麻烦的,如果你用过java的orm你就会发现java的orm即使再强大的orm使用起来都不会有python的orm如此这般简单,就是因为python的元类可以让我们控制权限很大
012019-06-17
相似问题
元类和父类中同时写了__new__方法
回答 1
老师,最后的并发爬虫有个错~
回答 1