魔术方法 / Magic Method 魔法方法就是可以给你的类增加魔力的特殊方法(实质应称为特殊方法,魔术方法在JavaScript中有所体现,对象具有不透明特性,而且无法在自定义对象中模拟这些行为),如果你的对象实现(重载)了这些方法中的某一个,那么这个方法就会在特殊的情况下被 Python 所调用,你可以定义自己想要的行为,而这一切都是自动发生的.它们经常是两个双下划线包围来命名的(比如 __init__,__lt__),Python的魔法方法是非常强大的.下面介绍几种常用的魔术方法 __…
__getattr__ 方法 __getattr__ 方法当对象调用内部属性(包括方法等)且未找到对应属性的时候会调用的特殊方法.利用这一特性,可是对函数实现一个代理模式. __getattr__方法实现代理模式 当有一个类中已完成了许多函数的定义,而另外一个类要调用这些函数时,最直接的方法是使用代理,重载类的 __getattr__ 方法, 并在该方法内利用 getattr() 实现对被代理对象的属性获取,从而实现一个代理模式,简化代码. 首先定义一个代理的对象类 Foo,实现几个方法, 1…
__call__ 方法 __call__ 是当对象被调用时会调用的方法,允许一个对象(类的实例等)像函数一样被调用,也可以传入参数. 1 class Foo(): 2 def __init__(self, x, y): 3 self.x = x 4 self.y = y 5 6 def __call__(self, m, n): 7 print('x is %s, y is %s, m is %s, n is %s' % (self.x, self.y, m, n)) 8 9 Foo(1, 2)…
类实例方法.私有方法和抽象方法 Python中最常用的就是类实例方法,类似于属性中的类实例属性,同时,也存在与私有属性类似方法,即私有方法,下面介绍这两种常见的方法,以及一种特殊意义的类实例方法 -- 抽象方法. 类实例方法 / Instance Method 类实例方法通过关键字 def 进行定义,第一个参数默认为 self,可利用 self / 类实例 对方法进行调用,是最基本的一种方法 class Foo(object): def foo(self): print("This is foo…
C++/Php/Python/Shell 程序按行读取文件或者控制台方法总结. 一.总结 C++/Php/Python/Shell 程序按行读取文件或者控制台(php读取标准输入:$fp = fopen("/dev/stdin", "r");) 1.php读取标准输入:$fp = fopen("/dev/stdin", "r"); 二.C++/Php/Python/Shell 程序按行读取文件或者控制台 写程序经常需要用到从文…
class Www: def __init__(self,name): self.name=name def __str__(self): return '名称 %s'%self.name #__repr__=__str__ *这是在__str__转换__repr__函数的偷懒小方法 #__str__函数是可以直接把对实例进行调用并得到使用 '''交互模式: 方法一>>> print(Www('实验')) 方法二>>> s=Www('实验') >>>…
静态方法.类方法和属性方法 在 Python 中有三种常用的方法装饰器,可以使普通的类实例方法变成带有特殊功能的方法,分别是静态方法.类方法和属性方法. 静态方法 / Static Method 在 def 定义之前加上 @staticmethod 进行装饰,便可以使该方法成为静态方法,静态方法无法调用实例属性.静态方法可以通过实例或类进行调用.通常用于无需生成实例或无需共享实例属性的方法中,比如一些纯粹的数学公式计算等场合. class Foo(): @staticmethod def foo…
函数与方法的区别 / Distinction of Function and Method 关于函数与方法的区别,可根据两者的定义看出, 函数function -- A series of statements which returns some value to a caller. It can also be passed zero or more arguments which may be used in the execution of the body. 方法method -- A…
生成器 / Generator 目录 关于生成器 生成器与迭代器 生成器的建立 通过迭代生成器获取值 生成器的 close 方法 生成器的 send 方法 生成器的 throw 方法 空生成器的检测方法 1 关于生成器 从计算机科学角度上看,生成器是一种类协程或半协程(Semi-coroutine),生成器提供了一种可以通过特定语句或方法来使生成器的执行对象(Execution)暂停,而这语句一般都是 yield.通过  yield 语句将每一次的结果切出执行对象,并带到主线程上来.yield…
基类与继承 / Base Class and Inheritance Class 面向对象的特性使得 Python 中不可避免地需要使用到类和类的继承,类的继承可以使得代码很好的被重用.下面以一些代码示例说明类的继承如何使用. 继承一个基类 首先,定义一个基类 Animal,在初始化中设定一个基本属性以及物种信息,并设置其具有 eat 的能力(self.eat 为 True).此处还重载了魔术方法 __getattr__,当搜索的属性不存在时返回 False(即不具备该能力),最后定义一个 sh…