标签: 面向对象编程

18 篇文章

031、多重继承
多重继承 多重继承指的是一个类可以同时从多个父类继承行为与特征的功能。Python 支持多重继承的。 例如,可以将之前的Leaf类进行抽象,树叶Leaf类,父类: class Leaf(object): def __init__(self, color='green'): self.color = color ColorChangingLeaf类,颜色可变的树叶,继承Leaf类…
030、公有、私有、特殊以及静态的方法和属性
公有、私有、特殊以及静态的方法和属性 一些以 _ 开头的都是对象的特殊方法和属性。通常来说: 以字母开头都是公有的方法和属性,可以直接调用; 在Python中,“私有”的方法和属性以_开头,不过,并不存在真正私有的方法和属性,所谓“私有”只是不会被代码自动完成所记录,无法在按键时自动补全。 以__开头并以__结尾的是一些系统内置的属性和方法。 以__开头不以__结尾的是一些更加特殊的方法,调用方式…
029、继承与复用
继承与复用 在自定义类型的基本形式中: class ClassName(ParentClass): """class docstring""" def some_method(self, ...): return ... ParentClass是用来进行继承的,被继承的ParentClass是父类,定义的ClassName是子类。可以认为…
028、方法与属性
方法与属性 自定义类型中通常要定义一些方法和属性。 手动添加属性 属性可以手动添加: class Leaf(object): """A leaf falling in the woods.""" pass leaf = Leaf() leaf.color = "green" leaf.color 'green' 这样添…
027、面向对象简介
面向对象简介 对象一般是指一个类的实例,具有相关的成员变量和成员函数,在Python中成员变量叫做属性,成员函数叫做方法。 什么是对象 Python中几乎所有的东西都是对象。基本类型是对象,如整数: a = 10 其属性与方法: a.real 10 a.conjugate() 10 对象在内存中有一个地址与之对应,这个地址可以用id()函数查看: id(len) 4514492720 同一个对象的…
102、多重继承
多重继承 多重继承,指的是一个类别可以同时从多于一个父类继承行为与特征的功能,Python 是支持多重继承的: class Leaf(object): def __init__(self, color='green'): self.color = color class ColorChangingLeaf(Leaf): def change(self, new_color=&#…
101、共有,私有和特殊方法和属性
共有,私有和特殊方法和属性 我们之前已经见过 special 方法和属性,即以 __ 开头和结尾的方法和属性 私有方法和属性,以 _ 开头,不过不是真正私有,而是可以调用的,但是不会被代码自动完成所记录(即 Tab 键之后不会显示) 其他都是共有的方法和属性 以 __ 开头不以 __ 结尾的属性是更加特殊的方法,调用方式也不同: class MyClass(object): def __init_…
100、接口
接口 在 Python 中,鸭子类型(duck typing)是一种动态类型的风格。所谓鸭子类型,来自于 James Whitcomb Riley 的“鸭子测试”: 当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。 假设我们需要定义一个函数,这个函数使用一个类型为鸭子的参数,并调用它的走和叫方法。 在鸭子类型的语言中,这样的函数可以接受任何类型的对象,只要这个…
099、重定义森林火灾模拟
重定义森林火灾模拟 在前面的例子中,我们定义了一个 BurnableForest,实现了一个循序渐进的生长和燃烧过程。 假设我们现在想要定义一个立即燃烧的过程(每次着火之后燃烧到不能燃烧为止,之后再生长,而不是每次只燃烧周围的一圈树木),由于燃烧过程不同,我们需要从 BurnableForest 中派生出两个新的子类 SlowBurnForest(原来的燃烧过程) 和 InsantBurnFore…
098、super() 函数
super() 函数 super(CurrentClassName, instance) 返回该类实例对应的父类对象。 class Leaf(object): def __init__(self, color="green"): self.color = color def fall(self): print "Splat!" class MapleLeaf…