面向对象(简写:OOP)
面向对象编程定义:利用类和对象来创建各种模型,来实现对真实世界的描述。
优点:使程序更容易理解和维护以及扩展代码。
类定义:用来描述具有相同的属性和方法的对象的集合。(简单讲就是个模板)
实例化定义:创建一个类的实例,类的具体对象。
对象定义:通过类定义的数据结构的实例
举例:一个最简单最小结构的类写法如下:
class class_name(object):
print('bababa')
举例一个正常类的写法:
class 类名称(object):
def __init__(self,name..) #构造函数
self.arg1 = name # 普通属性(成员变量),注:self就是实例对象本身,保存在对象内存里
def fun1(self): # 普通方法(动态属性)
print('...')
类进行实例化的运行原理:
1:将类中的对象和方法存储于内存中,
2:类进行实例化时,先在内存申请一块空间用于存放实例对象
3:把实例对象的内存地址和赋值参数传递给类模板
4:模板对传入的值进行self变量赋值,然后将self变量发送到实例对象内存空间。
类的三大特性:封装,继承,多态
-- 封装:类内部的数据和方法,对数据的赋值和内部调用对类外部而言是透明的。简单说就是隐藏实现的细节,使代码模块化。
特性:防止数据被随意修改,可以通过此对象对外接口进行直接访问。
另(类封装了属性和方法,对象封装了普通属性的值)
-- 继承:一个父类派生出的子类,在父类里定义的属性和方法自动被子类继承,实现一个角色的共同点和不同点的同时存在。使代码重用
注意:承可以多级继承,不过越多代码会越复杂,建议继承2-3级即可,继承的2个类之间应该是属于的关系。
-- 被继承的类命名:父类,基类,超类
-- 继承的类命名:子类,派生类
--种类:单继承和多继承。
--继承的过程:从一般到特殊的过程。
这里“一般”指:父类这样的对一个角色具有共同点。
这里“特殊”指:子类这样的对每一个角色的不同点的单独定义
--实现方式有2类:实现继承 和 接口继承
实现继承:指父类具有的功能,子类继承后直接调用不需再修改。
接口继承:指仅使用父类的属性和方法的名称,具体实现需要在子类里单独实现。
举例:单继承基本继承写法
1 class Person(object): 2 def __init__(self,name,age=22): 3 self.NAME = name 4 self.AGE = age 5 self.storage = 'Normal' 6 def talk(self): 7 print('custom ......') 8 class blackPerson(Person): 9 def __init__(self,name,age,job): 10 Person.__init__(self,name,age) #继承父类的属性(经典写法) 11 self.JOB = job 12 def talk(self): 13 Person.talk(self) # 继承父类的方法,不过这样没有意义, 14 print('非洲语言') 15 class writePerson(Person): 16 def __init__(self,name,mess): 17 Person.__init__(self,name) 18 self.MESS = mess 19 def talk(self): 20 print('speak ENGLISH')