文章分类 - python
摘要:应该承认,Python的OOP不是想象中的那么简单,其中的诸多概念也许很多都知道,像MRO、super、property等等。很多情况问什么是property,都知道怎么用,但是问property是什么、怎么实现的很多情况就抓瞎了。property是通过descriptor实现的。 关于descri
阅读全文
摘要:在Python面向对象编程中,有一个约定俗成的Mixin。Python作为一种动态语言,和C++一样都支持多重继承,但是Python也可以像Java(不支持多重继承)一样通过接口来实现多重继承,Mixin相当于Java中的接口,但是可以带实现的接口。假如要设计Animal顶层父类,用以来实现Dog/
阅读全文
摘要:Elixir是跑在Erlang vm上的一门新语言,有着灵活的语法(Erlang的语法很不友好),又兼具了Erlang的并发,性能,稳定性。是一门非常值得学习的语言。作者是José Valim,从2011年开始开发,Elixir已经可以实际使用了。 可以看看Erlang作者对Elixir的评价htt
阅读全文
摘要:所谓上下文 计算机上下文(Context)对于我而言,一直是一个很抽象的名词。就像形而上一样,经常听见有人说,但是无法和现实认知世界相结合。 最直观的上下文,莫过于小学的语文课,经常会问联系上下文,推测...,回答...,表明作者...。文章里的上下文比较好懂,无非就是前与后。 直到了解了计算机的执
阅读全文
摘要:上下文管理器 上下文管理器执行了__enter__()和__exit__()方法 可以用“上下文管理器”写的更好。所以,用with语句改写之后,就是很优雅的了。 contextlib模块 Python中的这个模块使上下文管理中非常好用的东东,这也是标准库中的一员,不需要另外安装了 contextli
阅读全文
摘要:上下文管理器(context manager)是Python2.5开始支持的一种语法,用于规定某个对象的使用范围。一旦进入或者离开该使用范围,会有特殊操作被调用 (比如为对象分配或者释放内存)。它的语法形式是with...as... 关闭文件 我们会进行这样的操作:打开文件,读写,关闭文件。程序员经
阅读全文
摘要:这篇文章是关于什么的? 什么是Python中的上下文管理器 怎么使用上下文管理器 如何创建自己的上下文管理器 关于Python上下文库(contextlib) 1. 上下文管理器是什么? 举个例子,你在写Python代码的时候经常将一系列操作放在一个语句块中: 当某条件为真 – 执行这个语句块 当某
阅读全文
摘要:getattr() 这个函数最主要的作用是可以通过字符串获取方法实例 python 里面跟 getattr 相关的有 hasattr, setattr, delattr,下面通过一个示例来具体说明它们的用法,我们定义了一个 example 的类,下面的示例都将使用到它 hasattr(object,
阅读全文
摘要:获取和设置对象相关属性时常用的三个魔法方法 在访问对象的 item 属性且 item 属性不存在时会调用此方法,如果对象已经有 item 这个属性了,则不会调用这个方法,会直接返回对象的 item 属性 在试图为对象的 item 属性赋值的时候会被调用 访问对象的任何属性,不管存不存在,都会调用此方
阅读全文
摘要:在 Python 中,善用列表推导式和字典推导式可以非常方便地创建列表和字典。 列表推导式 又称列表解析式,提供了一种简明扼要的方法来创建列表。 基本语法如下: 假设我们有如下需求,求 0-9 的平方是多少,用循环实现如下: 我们可以直接使用列表推导式来简化上述操作: 遍历 0-9 的数组,然后对每
阅读全文
摘要:Mixin 实质上是利用语言特性(比如 Ruby 的 include 语法、Python 的多重继承)来更简洁地实现组合模式。 Mixin 的出现是为了解决多重继承的问题,那么多重继承到底有什么问题? 结构复杂化:如果是单一继承,一个类的父类是什么,父类的父类是什么,都很明确,因为只有单一的继承关系
阅读全文
摘要:我们前面理解了类。类就是把具体事物给抽象出来。其实也有归类、类别的意思。我们举一个例子:人的职业有Teacher、Coder、Writer、Singer等职业继承关系就是: 但是有这么一类人比较特殊,白天上班码代码(Coder),晚上写文章(Writer),我们叫他为CoderWriter。那么Co
阅读全文
摘要:在设计类的继承关系时,通常,主线都是单一继承下来的,例如,Ostrich继承自Bird。但是,如果需要“混入”额外的功能,通过多重继承就可以实现,比如,让Ostrich除了继承自Bird外,再同时继承Runnable。这种设计通常称之为MixIn。 class Dog(Mammal, Runnabl
阅读全文
摘要:在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,导致可以把成绩随便改: s = Student() s.score = 9999 为了限制score的范围,可以通过一个set_score()方法来设置成绩,再通过一个get_score()来获取成绩,这样,在set_
阅读全文
摘要:函数式编程 如果程序中的函数仅接受输入并产生输出,即输出只依赖于输入,内部数据不可变,避免保存程序状态,用同样的输入值反复调用可以得到相同的结果,那么这种编程范式就称为函数式编程(Functional Programming,简称FP,又称泛函编程)。 这种风格也称声明式编程(Declarative
阅读全文
摘要:Python类分为两种,一种叫经典类,一种叫新式类。两种都支持多继承。 考虑一种情形,B继承于A,C继承于A和B, 但C需要调用父类的init()函数时,前者会导致父类A的init()函数被调用2次,这是不希望看到的。而且子类要显式地指定父类,不符合DRY原则。 采用新式类,要求最顶层的父类一定要继
阅读全文
摘要:在上一篇介绍生成器时,我们讲到了协程(Coroutine),它也被称为微线程。回顾一下,协程可以在一个函数执行过程中将其挂起,去执行另一个函数,并在必要时将之前的函数唤醒。在Python的语言环境里,协程是相当常用的实现“并发”的方法。上一篇的例子中,我们演示了如何使用yield关键字来实现协程,不
阅读全文
摘要:继续Python协程方面的介绍,这次要讲的是gevent,它是一个并发网络库。它的协程是基于greenlet的,并基于libev实现快速事件循环(Linux上是epoll,FreeBSD上是kqueue,Mac OS X上是select)。有了gevent,协程的使用将无比简单,你根本无须像gree
阅读全文
摘要:像C或C++这类语言都支持多重继承,一个子类可以有多个父类,这样的设计常被人诟病。因为继承应该是个”is-a”关系。比如轿车类继承交通工具类,因为轿车是一个(“is-a”)交通工具。一个物品不可能是多种不同的东西,因此就不应该存在多重继承。不过有没有这种情况,一个类的确是需要继承多个类呢? 答案是有
阅读全文
摘要:什么是 mixin ? In object-oriented programming languages, a mixin is a class that provides a certain functionality to be inherited or just reused by a sub
阅读全文

浙公网安备 33010602011771号