1.初识面向对象      面向过程:             一切以事物的发展流程为中心      面向对象:             一切以对象为中心.一切皆为对象.具体的某一个事务就是对象 打比方:       大象进冰箱             步骤:第一步:开门, 第二步:装大象,第三:关门              面向对象:  大象,进冰箱 ,  此时主语是大象,我操纵的是大象,此时的大象就是对象 2.类,对象 类: 就是图纸.  创建对象的第一步.先画图纸.先写类. 对象:  通过类创建对象, 列如:对象就是车,通过图纸造出来的东西 类与对象的关系:   类是对xxx事务的归类.           写:               __init__(self,参数)   参数一般作为属性设置给对象.对象就是self,对徐行的封装.              def 方法(self,参数):  方法. 第一个参数一般是固定的self.当前类的对象.                      pass              对象是xx类型的一个具体                      创建对象: 类名()   创建类: class 类名:              def __init__(self):   ##初始化方法.又被称为构造方法                    self.属性  = 值                    self.属性  = 值                    self.属性  = 值              def  fangfa(self):                       方法体(函数体, return) 创建对象:           变量 = 类型()     ###实例化   <->创建对象           变量.属性    #访问对象的属性信息           变量.方法()   ##访问类中的方法 1. 创建⼀个武松. 武松可以打老虎, 杀嫂⼦, 替天⾏道 类就是对属性和方法的封装 class Person:     # 属性     def __init__(self, waihao, name, address):         self.waihao = waihao         self.name = name         self.addre ss = address       # 动作     def dalaohu(self):         print('%s%s%s打老虎' % (self.waihao, self.name, self.address))       def shasaozi(self):         print("这个人, 喜欢啥嫂子")       def titianxingdao(self):         print("替天行道")   ws = Person("行者", "武松", "景阳县") ws.dalaohu() ws.shasaozi() ws.titianxingdao() ⽤⾯向对象的思维来完成⽤户登录. # 用户登录的问题. 逻辑是活的 # # 我的版本: 把所有的逻辑都写在类中 class User:       def __init__(self, username, password):         self.username = username         self.password = password         def login(self):         uname = input("请输入你的用户名")         upwd = input("请输入你的密码")           if uname == self.username and upwd == self.password:             print("登录成功")         else:             print("登录失败")   u = User("alex", "123") u.login() 3.面向对象和面向过程的对比:    如果细一些比较小的程序用面向过程    程序很复杂,很庞大建议用面向对象 # 小猪佩奇. 使用嘴巴嘟嘟技能攻击 超人 # 小猪佩奇. 使用嘴巴嘟嘟技能攻击 蝙蝠侠 # 小猪佩奇. 使用嘴巴嘟嘟技能攻击 蜘蛛侠   # 面向过程: 代码非常的冗余. 尤其是参数 def fight_superman(name, jineng):     print("%s使用%s攻击超人" % (name, jineng))   def fight_batman(name, jineng):     print("%s使用%s攻击蝙蝠侠" % (name, jineng))   def fight_spiderman(name, jineng):     print("%s使用%s攻击蜘蛛侠" % (name, jineng))     fight_superman('小猪佩奇', "嘴巴嘟嘟") fight_batman('小猪佩奇', "嘴巴嘟嘟") fight_spiderman('小猪佩奇', "嘴巴嘟嘟")   #面向对象 class Pig:     def __init__(self, name, jineng):         self.name = name         self.jineng = jineng       def fight_superman(self):         print("%s使用%s攻击超人" % (self.name, self.jineng))       def fight_batman(self):         print("%s使用%s攻击蝙蝠侠" % (self.name, self.jineng))       def fight_spiderman(self):         print("%s使用%s攻击蜘蛛侠" % (self.name, self.jineng))   pg = Pig("小猪佩奇", "嘴巴嘟嘟") # 不需要向原来一样传递一样的参数了 # 面向对象的程序: 结果相对清晰. 缺点: 代码量比原来大, 上手太难 pg.fight_batman() pg.fight_spiderman() pg.fight_superman() 4.面向对象的三大特征:  封装, 继承,多态    封装:   1.对属性的封装(__init__),    2.对方法和功能的封装    继承:  子类自动拥有父类中除了私有内容外的其他所有内容                    class Bar(fool):    Bar对fool进行了扩展                              pass               当出现x是一种y的时候.    推荐使用继承关系              python支持多继承.   查找顺序: 先找理他近的 # 当出现xxx是一种yyy类型的东西. 可以使用继承关系 # 猫是一种动物 class Animal:     def dong(self):         print("动物会动, 顾雍")   class Cat(Animal): # 子类其实是对父类的一种扩展     def catchMouse(self):         print("猫很皮, 抓老鼠")   c = Cat() c.dong() c.catchMouse()     # python支持多继承 class Foo1:     def getMoney(self):         print('给你个大嘴巴子')       def play(self):         print("玩儿")   class Foo2:     def getMoney(self):         print('给多点儿')   class Bar(Foo1, Foo2): # 离当前类最近的是亲爹, 后面的是干爹.     pass   b = Bar()  # 就近原则, MRO的C3算法 多态(python原生直接就是多态)              python更多的之臣的是鸭子模型,只要会嘎嘎叫就是好鸭子
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄