面向对象(一)

一、面向对象的程序设计(OOD)
二、面向对象的编程(OOP)
三、类
四、对象/实例
五、名称空间

一、面向对象的程序设计(OOD)

  1. 面向对象的程序设计相当于面向过程的程序设计而言,解决了程序的扩展性。
  2. 通过抽象对象的特征和技能定义一个类,其中,特征和技能对应对象的数据属性和方法属性。

二、面向对象的编程(OOP)

  1. 首先,定义类
  2. 然后,根据类实例化出对象
#定义类:
class Student:
    country = 'China'
    def __init__(self, ID, name, sex, PROVINCE):
        self.id = ID
        self.name = name
        self.sex = sex
        self.province = PROVINCE
    def choice_course(self):
			pass
#实例化:
s = Student('2013157','Lily','female','Shanghai')

三、类

1.python类的介绍

python3中,所有的类都是新式类,默认继承object

#python3中
class A(object): #新式类
    pass

class B: #新式类
    pass

python2中,分为经典类和新式类,新式类需要在定义类时声明继承object,没有继承声明继承object的类属于经典类

#python2中
class A(object): #新式类
    pass
    
class B: #经典类
    pass

2.类的属性:

类的属性包括:变量和函数,统称为类的属性。

3.类的用法:属性引用和实例化

属性引用,类名.属性
相当于变量引用和函数引用

#属性引用
Student.name #引用类下的变量
Student.choice_course() #引用类下的函数t

#属性修改
Student.name = 'Alex'

#属性增加,类中没有此属性,就会增加age属性
Student.age = '19'

#属性删除
del Student.sex

注:类的建立表示产生一个类的名称空间,在名称空间中可以定义变量或者函数(相当于定义了一堆名字,名字会指向一个具体的内存地址)
查看类的名称空间:类名.dict_
属性引用中的操作本质就是在操作__dict_

类变量和函数是类与对象共有的属性,类的变量通常定义为不可变类型

实例化,类名(参数)
相当于调用类的__init__函数,将对象传给__init__方法中的self,其他参数按序传递

#实例化:
s = Student('2013157','Lily','female','Shanghai') #将s传给__init__(self, ID, name, sex, PROVINCE)中的self

注:实例化一个对象,相当于产生一个名称空间,对象的名称空间中只有变量
查看对象的名称空间:对象._dict_

四、对象/实例

类的实例产生对象,对象只有数据属性
类的函数会唯一绑定到一个实例化的对象,每个对象的绑定方法的内存地址都不一样

#绑定方法:
s.choice_course() #将s传给choice_course(self)中的self

五、名称空间

名称空间包括:类的名称空间、对象的名称空间

  • 类创建的同时就会产生类的名称空间,名称空间存储类的属性(变量和函数)
  • 对象创建的同时就会产生对象的名称空间,名称空间存储对象的属性(变量)
  • 对象寻找属性时,会先从自己名称空间寻找,找不到去类中寻找,找不到去父类中寻找,找不到报异常
posted @ 2017-05-01 10:50  六神酱  阅读(184)  评论(0编辑  收藏  举报