概念
对于OOP(Object-oriented programming)面向对象的程序设计,关注的是对象(Object)的建立,对象 将数据和函数放在一起。类
一个类大体上相当于一个数据类型,一个用户自定义的复合类型类的定义:
class new_class_name:e.g.
class vsb:
pass
位置一般放在程序的最前面,import语句之后。
以这种 新定义的数据类型(也就是“类”)所定义的新的 实体 被称为 ‘类型的实例’ 或 ’对象的实例‘ (instances),
类的调用,实例化
建立一个新的实例 称为实例化(instantiation), 由 调用类 来实现。类, 跟函数一样,可以被调用。 准确的说,每个类自动 提供一个构造器 constructor,用来构造 此类的对象实例,这个构造器 与类 同名,但是功能类似于函数。也就是说 类 vsb 自动提供一个 构造器 vsb(), 创建新的 vsb 类 的 对象实例 时, 就 使用 vsb的构造器 vsb().
例如,我们以上面定义的新类 vsb 来实例化一个 vsb 对象
>>> type(vsb)
<type 'classobj'>
>>> v=vsb()
>>> type(v)
<type 'instance'>
>>>
类的理解
可以将 类 理解为 制造对象的 工厂, 类 本身不是对象实例,但是 类 拥有制造 对象实例的 设备属性
跟真实世界的 物体(object) 一样,对象实例(object instance) 也有 形态 和 功能, 形态 由 实例中的 数据要素 构成
可以用"."运算符 来向实例中添加新的要素
eg.
>>> v.x = 3
>>> v.y = 4
相当于模块当中的变量,模块当中的变量也成为 属性
初始化方法 和 self
每个 类 都要有一个特殊 的方法 叫做 __init__, 当创建一个新的 对象实例 时, __init__被自动 调用。作用是 在创建新实例的时候 能够 为 对象实例的属性 设置 初始状态/初始值。
当希望有什么事情是在一个类的对象刚被创建时,就发生/执行/完成的话,就放在__init__里面,比如说,打印一条信息说自己是个刚刚被创建的某类的实例。
self 参数,指的是 类的 对象实例。
++++++++++++++++++++++++ ??? ++++++++++++++++++++++++++
为了给 类 vsb 添加属性,要向 类的定义中 添加 初始化 方法。
class vsb:
def __init__(self, x=3, y=4):
self.x = x
self.y = y
++++++++++++++++++++++++ ??? ++++++++++++++++++++++++++
方法:
方法表现得像个 函数, 但是他是 对象的一部分,跟 对象的属性一样,通过 点运算符“.” 来访问, 当 类被调用时, 初始化方法 被自动调用。
在定义方法的时候,需要有至少一个参数“self”,eg
class vsb:
def __init__(self, x=3, y =4):
self.x = x
self.y = y
def create (self, cfg, dir):
pass
def build(self):
pass
方法在调用的时候不需 self, e.g.
p = vsb()
p.create(pcfg,pdir)
self 指的是p这个对象实例,即:
p.create(pcfg,pdir) = vsb.create(p,pcfg,pdir)
对象实例也可以作为其他函数调用的参数