面向对象(一)
一、面向对象的程序设计(OOD)
二、面向对象的编程(OOP)
三、类
四、对象/实例
五、名称空间
一、面向对象的程序设计(OOD)
- 面向对象的程序设计相当于面向过程的程序设计而言,解决了程序的扩展性。
- 通过抽象对象的特征和技能定义一个类,其中,特征和技能对应对象的数据属性和方法属性。
二、面向对象的编程(OOP)
- 首先,定义类
- 然后,根据类实例化出对象
#定义类:
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
五、名称空间
名称空间包括:类的名称空间、对象的名称空间
- 类创建的同时就会产生类的名称空间,名称空间存储类的属性(变量和函数)
- 对象创建的同时就会产生对象的名称空间,名称空间存储对象的属性(变量)
- 对象寻找属性时,会先从自己名称空间寻找,找不到去类中寻找,找不到去父类中寻找,找不到报异常