面向对象

1,类Class是抽象的;对象Object是具体的;

2,类的属性:方法Methods(类包含的函数)和类变量Class Variables;

3,类用Class创建,method和Variable在缩进块中定义;

4,对象内定义的变量称为实例变量Instant Variables,对象可以使用类内的函数(Methods);

5,对象和类内的变量统称为域Field;

6,self

      类的Method与一般函数的唯一区别是,Method的参数列表中必须首先一个参数self。

      self的作用是:假设一个类MyClass以及对应的对象MyObject,当该对象调用某Method时,

      MyObject.Method(arg1, arg2),对Python来说即相当于 MyClass.Method(MyObject, arg1, arg2)。

      但是,假如某个Method只属于类时,不需要再声明self;此时,应该该method上一行标明 @classmethod

7,创建类的对象

      类名之后加一对圆括号。例如:

      Class Person:

          pass

      p = Person()

8,Method __init__

       __init__的作用是,在创建对象时,使用__init__对其初始化。

       初始化什么、初始化成什么样子,完全由__init__的内容决定。举个例子。

       Class Person:

           def __init__ (self, name1) :

                self.name2 = name1

                # self可理解成对象的”替身”;

                # 初始化的内容是,定义一个实例变量name2,在初始化时把传递给参数name1的值赋给它

        p = Person(‘Dickface’)

        此后,p.name2即为Dickface

9,类变量

       一般来说,类变量是共享的而且是互斥的。即,所有的对象均可调用类变量,而且某一时刻仅允许最多一个对象引用它;类变量的变化会反映到全局。

       如果希望类变量私有,可以在变量名前加前缀 __,例如 __privatevar

10,继承

         (1) 继承规则:父类作为元组跟在子类名称后面,带冒号。

               例如: class ChildClass (ParentClass) :

         (2) 初始化

               在子类中,用父类的__init__初始化父类部分,用self再初始化子类部分

               有一点需要注意,父类的初始化是在子类初始化要退出之前才开始的。

               看下面例子:

               image

              实验证明,打印的消息会出现在父类的消息之前。

         (3) method的使用

               子类的对象使用method,会从下到上层层搜索。即,现在子类中寻找该method,如果没有,再到父类中找。

posted on 2017-07-12 17:57  freshair_cn  阅读(181)  评论(0编辑  收藏  举报

导航