当前位置: 首页 > news >正文

网站开发与应用 答案宣传片拍摄内容

网站开发与应用 答案,宣传片拍摄内容,宿州移动网站建设,如何做网站相册1.什么是类 在理解元类之前#xff0c;我们必须先掌握Python中的类(class)。 和大多数语言一样#xff0c;Python中的类知识用来描述如何“生成一个对象”#xff1a;但是#xff0c;在Python中#xff0c;类不仅能用来描述如何生成一个对象#xff0c;类本身也是对象。 …1.什么是类 在理解元类之前我们必须先掌握Python中的类(class)。 和大多数语言一样Python中的类知识用来描述如何“生成一个对象”但是在Python中类不仅能用来描述如何生成一个对象类本身也是对象。 在你使用关键词 class 的时候Python就会执行它并创建一个对象。class ObjectCreator(object):... pass... 上述指令在内存中创建了一个“ObjectiveCreator”的对象。 这个对象(类)本身具有创建对象(实例)的能力因此它也是一个类。你可以对它做以下操作 1.将其分配给变量 2.复制它 3.为其添加属性 4.将其作为函数参数传递 例如2.动态创建类 由于类是对象因此你可以像创建任何对象(数组、字典等)一样随时随地创建类。 你甚至可以在函数里创建类郑州哪里的妇科医院好http://www.zztjfk.com/ 郑州妇科医院哪里好http://www.zzyytj.com/ 但是这样的类并不是很动态因为你必须自己编写整个类。 使用class关键字时Python会帮你自动创建此对象但是Python同样也提供了一种手动创建的方法那就是type函数。print(type(1)) print(type(1)) print(type(ObjectCreator)) print(type(ObjectCreator())) type函数最经典的用法是返回对象的类型。但是很少人知道它还能接受参数并手动创建类。 type(name, bases, attrs) 其中 name: 类名 bases: 元组父类名 attrs: 字典类属性值 因此你可以这样手动创建类MyShinyClass type(MyShinyClass, (), {}) # returns a class object print(MyShinyClass) print(MyShinyClass()) # create an instance with the class__main__.MyShinyClass object at 0x8997cec 如果你想给它赋予属性可以这样玩class Foo(object):... bar True 等同于Foo type(Foo, (), {bar:True}) 用来继承也是可以的FooChild type(FooChild, (Foo,), {}) print(FooChild) print(FooChild.bar) # bar is inherited from FooTrue 可见通过 type() 函数创建的类和直接写class是完全一样的。 因为Python解释器遇到class定义时仅仅是扫描一下class定义的语法然后调用 type() 函数创建出class。 正常情况下我们用class来定义类但是type()函数也允许我们动态创建类也就是说动态语言本身支持运行期动态创建类这和静态语言有非常大的不同。 Python是通过什么做到这一切的?那就是元类。 3.什么是元类 元类就是用于创建类的“东西”。 你定义类是为了创建对象Python中所有的类都是对象。元类是用于创建这些对象的。可以看这个例子 MyClass MetaClass()my_object MyClass() 这有点像套娃。这段代码转化为type就是这样的 MyClass type(MyClass, (), {}) 因此我们可以得到一个基本事实type 本身就是一个元类。 其实就是 type 在幕后创建了Python中所有的类。 通过检查__class__属性你会看到Python中一切对象都是基于 type 的age 35 age.__class__ name bob name.__class__ def foo(): pass foo.__class__ class Bar(object): pass b Bar() b.__class__ 那么有个有趣的问题,__class__的__class__是什么呢?age.__class__.__class__ name.__class__.__class__ foo.__class__.__class__ b.__class__.__class__ 因此元类只是创建类对象的东西如果愿意可以将其称为“类的工厂”。 type 是Python使用的内置元类。不过你可以创建自己的元类。 3.1 __metaclass__属性 在Python 2中可以在编写类时添加属性__metaclass__使用某个元类来创建该类 class Foo(object): __metaclass__ something... [...] 不过要小心的是你虽然先写了 class Foo(object)但Foo这个对象尚未被创建Python将先寻找__metaclass__类找到后用它来创建Foo类。 如果没有这个__metaclass__类它将使用 type 来创建类。 因此类创建的流程是这样的 1.创建的类中有__metaclass__元类属性吗? 2.如果有那就用__metaclass__给该类在内存中创建一个类对象。 3.如果Python找不到__metaclass__它将在MODULE级别查找__metaclass__属性 。 4.如果还是没有那就使用父类的元类来创建类对象。 现在的问题就是你可以在__metaclass__中放置些什么代码呢? 答案就是可以创建一个类的东西。那么什么可以用来创建一个类呢?type或者任何继承或使用它的东西。 3.2 Python 3中的元类 设置元类的语法在Python3已改为 class Foo(object, metaclasssomething): ... 即不再使用__metaclass__属性而是在基类参数列表中引入关键字参数。 不过元类的基本工作方式不变。在Python3中你可以将属性作为关键字参数传递给元类 class Foo(object, metaclasssomething, kwarg1value1, kwarg2value2): ... 4.为什么需要元类 元类最主要的一个应用方向是创建API一个最著名的应用是Django ORM比如 class Person(models.Model): name models.CharField(max_length30) age models.IntegerField() 当你这样访问属性的时候 person Person(namebob, age35)print(person.age) 它并不会返回models.IntegerField而是返回了一个整形的数字。 这是因为models.Model引用了一个ModelBase类该类随后进行了魔术般地操作使其能够与数据库字段进行挂钩。 这就是元类的作用Django通过它完成了系列复杂的幕后工作将原本非常复杂的事情变得非常简单。
http://www.huolong8.cn/news/31985/

相关文章:

  • 服务器里面如何做网站表白网页在线生成网站源码
  • 东莞常平网站设计公司起名自动生成器
  • 网站制作教程步骤为什么网站显示建设中
  • 用电脑记事本做网站怎么做宣传网页
  • 中山做app网站公司吗您与此网站之间建立的连接不安全
  • 自己做网站 套模板广州必去的景点排名
  • 高密住房和城乡建设局网站仿网站上的焦点图
  • 山东公路建设集团网站大商创官网
  • 山东住房建设部官方网站昆明凡科建站公司
  • app网站建设 - 百度装修效果图在线设计
  • 青岛做网站建设的公司排名常州网站网站建设
  • 网站开发设计心得vs2010 iis 网站开发
  • 申请注册网站域名.商城开发网站的空间分录
  • php mysql网站开发实例教程油边机 东莞网站建设
  • 代做网站地图电子商务网站建设与管理教材评价
  • 成都隆昌网站建设asp网站程序
  • 我要用新浪云做网站网页制作技术有哪些
  • 做网站与做网页的区别wordpress百度联盟
  • 网站做seo多少钱网站备案提示
  • 青岛网站seo技巧物流公司网站模版
  • 网站备案授权码深圳网站建设 龙华信科咨询
  • 建设com网站国外浏览器搜索引擎入口
  • 大学生兼职做网站广州全网推广
  • 网站设计标题php小说采集网站源码
  • 做行业网站如何采集信息二手网站建设方案
  • 做电器的集团网站新型建站技术
  • 五莲网站建设维护推广做3d兼职网站
  • 游民星空是用什么做的网站怎样自己建立一个网站
  • iis配置网站无法访问建工类培训机构
  • 简单网站制作代码免费简历模板下载word可编辑