`

动态语言就是动态语言,还是要改变思路。。

 
阅读更多

废话不说直接看这个例子,请注意Dumper这个类的实现,好吧,其实我说的是self.dump(msg)这一句。

class DumpToScreen(object):
    def dump(self, msg):
        print "Message:", msg
        
class Dumper(object):
    def log(self, msg):
        self.dump(msg)
        
class ErrorHandler(Dumper, DumpToScreen):
    def dump_error(self, msg):
        self.log(msg)
        
        
e = ErrorHandler()
e.dump_error("Alert!")

 看明白了没?直接实例化Dumper然后调用log方法一定会抛异常(因为dump方法在Dumper中不存在),但是如果在ErrorHandler中调用就可以了,因为ErrorHandler是一个多继承,另外一条继承树上的DumpToScreen类实现了dump方法,把error message打印到console。

 

这就是传说中Python的Mixin。。。。DumpToScreen这个类一个比较好的命名实际上是DumpToScreenMixin,你也可以自己实现DumpToFileMixin,DumpToSkyDriveMixin,blahblahblah,然后在不更改ErrorHandler类内部逻辑的情况下天马行空任意扩充它的功能。

 

产生这个问题,源自于看Tornado的OAuth部分的代码,思维停留在编译型语言的我一下蒙了。比如,举一个例子,来自tornado:

class OAuth2Mixin(object):
    def authorize_redirect(self, redirect_uri=None, client_id=None,
                           client_secret=None, extra_params=None):
        args = {
          "redirect_uri": redirect_uri,
          "client_id": client_id
        }
        if extra_params:
            args.update(extra_params)
        self.redirect(
                url_concat(self._OAUTH_AUTHORIZE_URL, args))

    def _oauth_request_token_url(self, redirect_uri=None, client_id=None,
                                 client_secret=None, code=None,
                                 extra_params=None):
        url = self._OAUTH_ACCESS_TOKEN_URL
        args = dict(
            redirect_uri=redirect_uri,
            code=code,
            client_id=client_id,
            client_secret=client_secret,
            )
        if extra_params:
            args.update(extra_params)
        return url_concat(url, args)

 

分享到:
评论

相关推荐

    安卓字体使用多语言相关-动态改变字体的状态.zip

    通过阅读这份文档,开发者可以理解源码的设计思路,学习如何实现动态字体变化和多语言支持。 4. **spannablestringbuilderdemo**:这可能是一个示例项目,演示了`SpannableStringBuilder`的用法。`...

    汇编语言编写的简易贪食蛇游戏

    源代码是理解汇编语言程序设计思路的关键,通过阅读源代码,可以深入学习汇编语言的语法和编程技巧。 汇编语言虽然难度较高,不适合初学者入门,但它对于理解计算机底层工作原理极其有用。结合C语言的三角函数计算...

    动态脚本语言Lua与C++交互方法的研究与实现

    动态脚本语言Lua是一种在运行时才检查数据类型的语言,允许通过脚本动态地改变主程序的逻辑行为,而无需重新编译整个主程序。Lua以其轻量级、可扩展性、快速运行时速度和低内存占用率而著称。它是用标准C语言编写而...

    汇编语言实验报告

    在汇编语言实验中,报告应详述所使用的指令、程序设计思路以及遇到的问题和解决方法。 总结,汇编语言实验报告不仅涵盖了基本的汇编语言概念,还强调了实践操作和问题解决能力。通过这样的学习,不仅可以提升编程...

    提高Java程序动态性的一个新途径.pdf

    为了突破这种限制,JDK1.7版本开始引入了新的动态调用指令,也就是invokedynamic指令,它原本是为了支持Groovy、JRuby等动态类型语言在Java虚拟机上的运行而设计的。这种动态调用指令通过使用方法句柄(MethodHandle)...

    R语言处理遥感图像

    这一新的探索不仅拓宽了R语言的应用范围,也为遥感图像处理提供了新的思路和工具。 在遥感图像处理中,大气校正和地形校正是两个核心任务。由于地球大气层的影响,卫星获取的遥感图像往往包含大量噪音,如大气散射...

    51单片机数码管动态显示+汇编程序+proteus仿真

    总的来说,"51单片机数码管动态显示+汇编程序+Proteus仿真"是一个全面的教程,涵盖了单片机硬件控制、低级语言编程和电路仿真的多个方面,对于想要进入电子设计领域的初学者来说,是一份宝贵的学习资源。通过深入...

    汇编语言写的时钟小程序

    《汇编语言实现的彩色时钟程序解析》 在计算机科学的世界里,汇编语言是一种低级编程语言,它直接对应于机器指令,是计算机硬件能够理解和执行的语言。本篇文章将深入探讨一个由汇编语言编写的时钟小程序,这个程序...

    程序设计语言原理重点总结.pdf

    程序设计语言原理的重点涵盖了多个层面的内容,包括语言的评价标准、语言的基本特性和...通过这些知识点的总结,我们可以对程序设计语言的基本原理有一个全面的了解,从而更好地掌握各种编程语言的设计思路和使用方式。

    中南大学汇编语言课程设计,汇编语言课程设计汇编语言程序

    《中南大学汇编语言课程设计深度解析》 在计算机科学的世界里,汇编语言扮演着至关重要的角色,它是计算机硬件与高级编程语言之间的桥梁。本次中南大学的汇编语言课程设计,旨在让学生深入理解计算机底层工作原理,...

    汇编音乐程序含汇编语言课设报告

    在计算机科学领域,汇编语言是一种低级编程语言,它与机器语言紧密相关,但比机器语言更易读、更便于编写。汇编语言中的指令通常对应于计算机硬件的特定操作,允许程序员对计算机的每一个硬件功能进行精确控制。在这...

    L语言编译器的设计与实现

    本文主要介绍了L语言编译器的设计与实现过程,包括L语言(MinB)的基本定义、目标机器语言VSML的描述以及编译器的设计思路和实现方法。 #### 二、L语言(MinB)与VSML的定义 ##### 2.1 MinB语言的定义 MinB语言是...

    汇编语言程序设计_点歌系统

    汇编语言可以控制音频硬件,通过改变数字信号的频率、振幅和时间间隔来生成不同的音符,进而实现音乐的播放。 2. 编曲原理:编曲涉及到音符的选择、节奏的设定和音色的调整。在汇编语言中,这需要通过精确的计算和...

    微机课设报告 汇编语言 打字游戏设计

    在本篇微机课设报告中,我们聚焦于使用汇编语言设计一款打字游戏。汇编语言是一种低级编程语言,它与计算机硬件紧密相连,允许程序员直接控制硬件资源,具有高效、直接和灵活的特点。这篇报告将深入探讨如何运用汇编...

    汇编语言上机实验及报告

    在IT领域,汇编语言是一种低级编程语言,它与机器语言紧密相关,但比机器语言更易读、更易编写。汇编语言是计算机科学的基础之一,理解它有助于深入理解计算机系统的运作机制。本实验及报告聚焦于汇编语言的基础结构...

    vue项目实现多语言切换的思路

    当需要切换语言时,改变Vue-i18n的locale属性即可。 6. **动态文本处理** 对于包含动态数据的文本,如`'剩余{0}台矿机未登记'`,Vue-i18n支持占位符,可以通过函数式插值方式处理,例如`{{ this.$t('剩余{0}台矿机...

    汇编语言程序设计画栅栏线

    在IT领域,汇编语言是一种低级编程语言,它与计算机硬件紧密相关,直接对应于机器指令。"画栅栏线"是一个典型的汇编语言编程练习,旨在帮助学习者掌握控制硬件执行特定图形任务的能力。这个主题通常出现在计算机科学...

    大数据时代的汉语语言学及应用探讨.docx

    这意味着我们需要积累大量高质量的汉语语言资源,包括语音、文本、图像等,同时要实现语言范畴的形式化、语言数据的专项化和语言知识的可视化。形式化使语言规则易于计算机理解,专项化则便于数据的分类和检索,而...

    ChatGPT,赵元任,新文科-一个语言学家的思考.pdf

    文章从人工智能的两种主要思路——认知语言学和生成语言学的角度,回顾了语言学界的争论与进展。认知语言学强调语言的使用和经验基础,而生成语言学则侧重于内在的语言规则和结构。这两种视角在ChatGPT的背景下显得...

Global site tag (gtag.js) - Google Analytics