代码改变世界

6-1面向对象

2017-12-15 13:03  mmwss  阅读(151)  评论(0编辑  收藏  举报
#!/usr/bin/env python
# -*- coding:utf-8 -*-
''''''
'''
面向过程
编程是 语法+数据结构+算法组成的代码 来告诉计算机如何执行任务的过程
面向过程编程 通过一系列指令 一步一步告诉计算机做什么。依赖过程 从上到下
改一点的时候 有依赖的全要改 程序越大越难维护 脚本,一次性的任务。(写完就不动的)

面向对象
世界万物,皆可分类,皆为对象,对象就有分类,属性。
利用类和对象来创建各种模型来对真实世界的描述 1,程序的维护和扩展变的简单,提高效率2,容易理解
特性
class类
一个类即是对一类拥有相同属性对象的抽象,蓝图,原型。
object对象
一个类经过实例化。
封装
在类中对数据的赋值,内部调用对外部用户是透明的,这类变成一个容器。
继承
一个类可以派生出子类,在这个父类里定义的属性,方法自动被子类继承。继承多个类
子类继承父类,或多个父类
多态
一个接口,多种实现。说,员工开始工作,不说技术工作,销售工作。


###class类###
class aa:
a=12 #类变量 #先找实例变量再找类变量
cn = 'xx' #大家共用的属性 节省开销
def __init__(self,name,age):
#构造函数 开辟一块内存 只能在这里传参数
#在实例化时做一些类的初始化的工作
self.name=name
#实例变量(静态属性:变量)
self.__age_=age
#私有属性 在类内可以查看和更改。在类外不能
def __del__(self):
print("%s已死亡"% self.name)
def bb(self):
#类的方法,功能(动态属性:方法)
print('%s aaaaaaaaaaaaa'%(self.name))
def cc(self):
#在类内部函数查看私有属性
print('你 %s 岁了'% self.__age_)

a1=aa('一号',11) #实例化,初始化一个类。造一个对象
a1.bb();a1.cc()
a2=aa('二号',22);
a2.bb()
a2.cc() #在类内部函数查看私有属性
#############
程序本身检测

语法
调用函数-执行-返回结果
属性
方法
构造函数 class类
析构函数
在实例释放,销毁的时候自动执行的,做收尾工作关闭,连接,临时文件
def __del__(self): #被删除时执行 或者程序退出时执行
print('已死亡'%s self.name)

私有方法,私有属性
__变量名_ 改成私有属性
在类内可以访问私有私性,在类外部不可以访问。

'''




###class类###
class aa(object):
a=12 #类变量 #先找实例变量再找类变量
cn = 'xx' #大家共用的属性 节省开销
def __init__(self,name,age):
#构造函数 开辟一块内存 只能在这里传参数
#在实例化时做一些类的初始化的工作
self.name=name
#实例变量(静态属性:变量)
self.__age_=age
#私有属性 在类内可以查看和更改。在类外不能
def __del__(self):
print("%s已死亡"% self.name)
def bb(self):
#类的方法,功能(动态属性:方法)
print('%s 我是父类'%(self.name))
def cc(self):
#在类内部函数查看私有属性
print('%s %s 这是在类内调用私有属性'% (self.name,self.__age_))
def dd(self): #继承
print('%s 被子类重写前的调用'%self.name)
class ab(object):
def ee(self,object):
print('%s 另外父类%s'%(self.name,obj.name))
class aaa(aa): #继承aa 多继承(aa,父类2,父类3)
def __init__(self,name,age,hehe): #子类比父类多参数
super(aaa,self).__init__(name,age) #先把父类的参数传过去
#aa.__init__(self,name,age) #和上面功能一样 旧版写法
self.hehe=hehe #只添加子类比父类多出来的参数
#继承aa类
print('继承:我是子类')
def dd(self): #调用父类
aa.dd(self) #先调用一次父类
print('重写父类,子类多出的参数%s'%self.hehe) #再执行新的类

a9=aaa('xiao',9,' QQ') #调用子类
a9.dd()

a1=aa('一号',11) #实例化,初始化一个类。造一个对象
a1.bb();a1.cc()
a2=aa('二号',22);
a2.bb()
a2.cc() #在类内部函数查看私有属性

#继承策略
#广度优先,继承父类1,父类2,父父类2 默认 python 3都是
# python2 新式类 class a(object):
# 深度优先,继承父类1,继承父类1的父类,父类2,父类2的父类
# python 2 的经典类 class a:

#多态
class dongwu(object):
def __init__(self,name):
self.name=name
@staticmethod
def xx(obj):
obj.kk()
class cat(dongwu):
def kk(self):
print('%s 喵喵!'%self.name)
class dog(dongwu):
def kk(self):
print('%s 旺旺'%self.name)
m=cat('小猫')
w=dog('小狗')

dongwu.xx(m)
dongwu.xx(w)