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

北京网站建设华网天下科技/企业网络搭建

北京网站建设华网天下科技,企业网络搭建,网站建设公司-信科网络,做h5场景的网站译注:这是一篇在Stack overflow上很热的帖子。提问者自称已经掌握了有关Python OOP编程中的各种概念,但始终觉得元类(metaclass)难以理解。他知道这肯定和自省有关,但仍然觉得不太明白,希望大家可以给出一些实际的例子和代码片段以…

译注:这是一篇在Stack overflow上很热的帖子。提问者自称已经掌握了有关Python OOP编程中的各种概念,但始终觉得元类(metaclass)难以理解。他知道这肯定和自省有关,但仍然觉得不太明白,希望大家可以给出一些实际的例子和代码片段以帮助理解,以及在什么情况下需要进行元编程。于是e-satis同学给出了神一般的回复,该回复获得了985点的赞同点数,更有人评论说这段回复应该加入到Python的官方文档中去。而e-satis同学本人在Stack Overflow中的声望积分也高达64271分。以下就是这篇精彩的回复(提示:非常长)

类也是对象

在理解元类之前,你需要先掌握Python中的类。Python中类的概念借鉴于Smalltalk,这显得有些奇特。在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段。在Python中这一点仍然成立:>>> class ObjectCreator(object):

…       pass

>>> my_object = ObjectCreator()

>>> print my_object

<__main__.objectcreator object="" at="" 0x8974f2c="">

但是,Python中的类还远不止如此。类同样也是一种对象。是的,没错,就是对象。只要你使用关键字class,Python解释器在执行的时候就会创建一个对象。下面的代码段:>>> class ObjectCreator(object):

…       pass

将在内存中创建一个对象,名字就是ObjectCreator。这个对象(类)自身拥有创建对象(类实例)的能力,而这就是为什么它是一个类的原因。但是,它的本质仍然是一个对象,于是乎你可以对它做如下的操作:

1)   你可以将它赋值给一个变量

2)   你可以拷贝它

3)   你可以为它增加属性

电脑技术002pc网对《python plot x轴范围深刻理解Python中的元类(metaclass)》总结来说,为我们Python基础教程很实用。

4)   你可以将它作为函数参数进行传递

下面是示例:>>> print ObjectCreator

# 你可以打印一个类,因为它其实也是一个对象

>>> def echo(o):

…       print o

>>> echo(ObjectCreator)

# 你可以将类做为参数传给函数

>>> print hasattr(ObjectCreator, 'new_attribute')

Fasle

>>> ObjectCreator.new_attribute = 'foo'

#  你可以为类增加属性

>>> print hasattr(ObjectCreator, 'new_attribute')

True

>>> print ObjectCreator.new_attribute

foo

>>> ObjectCreatorMirror = ObjectCreator

# 你可以将类赋值给一个变量

>>> print ObjectCreatorMirror()

<__main__.objectcreator object="" at="" 0x8997b4c="">

动态地创建类

因为类也是对象,你可以在运行时动态的创建它们,就像其他任何对象一样。首先,你可以在函数中创建类,使用class关键字即可。>>> def choose_class(name):

…       if name == 'foo':

…           class Foo(object):

…               pass

…           return Foo

# 返回的是类,不是类的实例

…       else:

…           class Bar(object):

…               pass

…           return Bar

>>> MyClass = choose_class('foo')

>>> print MyClass

# 函数返回的是类,不是类的实例>>> print MyClass()

# 你可以通过这个类创建类实例,也就是对象

<__main__.foo object="" at="" 0x89c6d4c="">

但这还不够动态,因为你仍然需要自己编写整个类的代码。由于类也是对象,所以它们必须是通过什么东西来生成的才对。当你使用class关键字时,Python解释器自动创建这个对象。但就和Python中的大多数事情一样,Python仍然提供给你手动处理的方法。还记得内建函数type吗?这个古老但强大的函数能够让你知道一个对象的类型是什么,就像这样:>>> print type(1)

>>> print type("1")

>>> print type(ObjectCreator)

>>> print type(ObjectCreator())

这里,type有一种完全不同的能力,它也能动态的创建类。type可以接受一个类的描述作为参数,然后返回一个类。(我知道,根据传入参数的不同,同一个函数拥有两种完全不同的用法是一件很傻的事情,但这在Python中是为了保持向后兼容性)

更多:python plot x轴范围深刻理解Python中的元类(metaclass)

https://www.002pc.comhttps://www.002pc.com/python/1803.html

你可能感兴趣的Python,元类,metaclass,深刻理解

No alive nodes found in your cluster

0踩

0 赞

http://www.jmfq.cn/news/4900213.html

相关文章:

  • 武汉seo公司排名/东莞seo优化排名推广
  • 做外贸做网站/在哪里可以免费自学seo课程
  • 网站建设邀请函/网络推广员是干什么的
  • 重庆网站建设推荐/北京seo教师
  • 链接网站logo/自媒体是什么
  • php做的网站预览/企业seo顾问服务阿亮
  • 建网站自己做服务器/网络平台怎么创建需要多少钱
  • 浅谈幼儿园网站的建设与管理制度/自己怎么做百度推广
  • 临漳企业做网站推广/百度大数据查询怎么用
  • 桂林卖手机网站/网站一键收录
  • 武汉论坛网/吴中seo网站优化软件
  • 青岛专业做外贸网站/免费b站推广网站在线
  • 新建南昌网站建设公司/长春seo按天计费
  • 电子商务平台网站源码/口碑营销成功案例有哪些
  • 微信朋友圈做网站推广赚钱吗/关键词优化排名软件哪家好
  • 建设部颁发的证书网站/如何进行品牌宣传与推广
  • 怎么做网站适配/怎样在平台上发布信息推广
  • 临沂网站设计/做关键词优化的公司
  • 网站建设和网络优化/seo从零开始到精通200讲解
  • 重庆大学建设管理与房地产学院网站/一手app推广接单平台
  • 使用iis6搭建网站/北京朝阳区优化
  • wordpress仿p站主题/百家港 seo服务
  • 哈尔滨信息网免费招聘/长沙seo霜天
  • 廊坊网站搜索优化/2345王牌浏览器
  • 东莞优化网站建设/广州营销seo
  • 做任务挣钱的网站聚/页面优化的方法有哪些
  • 珠海响应式网站建设推广公司/抖音关键词排名系统
  • 建一个电商网站多少钱/宁波seo外包推广公司
  • 聊城网站公司/软件培训班学费多少
  • 厦门网络建站公司/百度网页提交入口