Coding机器人 2018-12-28 16:49 采纳率: 50%
浏览 318
已采纳

Python元类,返回函数,函数修饰符的设计前提背景是什么

如题,学习Python我遇到最最令我不解得就是这三个知识点.我不是要知道具体代码达到什么效果.而是想知道这样的设计理念解决了具体的什么问题.

针对这三个问题我查过很多资料,但是都没有解决我心中的疑惑,我目前的现状就是看到这三种情况的代码知道是什么意思.但是我却不知道在什么时候应该应用他们.因为很多别写的代码不使用这些方法也没有什么问题.这样这个设计在我看来就是多余的.

请资深专家指点迷津
  • 写回答

2条回答 默认 最新

  • threenewbee 2018-12-28 09:26
    关注

    翻译的问题,meta被翻译成了元,但是中国人不理解,什么元还方的。
    元这个词在中文里没有等价的词汇。实际上它表示对某个事物作用n次,或者说升维。

    举例:
    学习,这个词什么意思你知道吧,比如学习如何编程
    元学习,就是学习如何学习,或者说,学习的方法,方式
    编程,就是给计算机写程序
    元编程,就是给计算机写一个能自动编程的程序
    数据,就是描述某个事物的特性的东西,比如张三有1.8米,这就是数据
    元数据,就是描述数据的数据,比如对于人的数据,它有哪些字段(姓名、年龄、单位……,每个数据的类型、范围)
    再举一个和计算机无关的升维的例子
    比如你得到一幅书法作品,上面盖了一个印章,这是第一个维度,你有了作品,你可以拿给你的朋友一起欣赏。
    如果你是这个书法家,你有这个印章,你就来到第二个维度,你可以创作很多书法作品,都盖上这个印章。
    如果你是印章的设计者,你就来到了第三个维度,你可以雕刻出很多印章,然后送给很多书法家。
    当你所站的维度越高,你对于下面一个维度要做的事情,就占有绝对支配的地位。比如你会设计印章,你就可以盖印章,你能盖印章,你就不愁得不到很多盖了印章的作品。
    其实你提出的这个问题也是如此,你希望搞清楚语言设计的动机,这个维度比如何按照语法规则去写程序高,也是一种升维。

    如果你理解了上面的,那么
    类,这个你能理解,对吧
    那么元类,就是表示、操作类的类。

    返回函数,这个有很多用处,随便说一个,装饰器模式
    我有100个方法,我希望在这个方法的开头加上一个参数检查,结束加上一个日志记录这个函数被调用了
    那么如果是一个方法,我可以再写一个函数,然后调用这个函数,在那些函数里写上参数检查、调用、日志的代码
    但是100个方法,这么做不但累,而且代码重复,重复的话,就不好维护。
    那么我们可以写一个函数,传入你你需要装饰的函数,然后再在这个函数里返回一个新的函数,把参数检查日志加上去。
    这样调用装饰后的函数,就相当于调用了你自己写的那个修改的函数

    函数修饰符不知道你说的是什么,如果是指装饰符,那么就是我上面说的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 11月21日

悬赏问题

  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?