zoukankan      html  css  js  c++  java
  • day 16 初试面试对象

    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更多的之臣的是鸭子模型,只要会嘎嘎叫就是好鸭子
  • 相关阅读:
    模板
    2019牛客暑期多校训练营(第五场)
    Codeforces
    Codeforces
    SCUT
    模板
    Codeforces
    2019 Multi-University Training Contest 4
    Codeforces
    Codeforces
  • 原文地址:https://www.cnblogs.com/yanghongtao/p/10140059.html
Copyright © 2011-2022 走看看