前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >day 16 初试面试对象

day 16 初试面试对象

作者头像
py3study
发布2020-02-10 22:49:47
3700
发布2020-02-10 22:49:47
举报
文章被收录于专栏:python3python3python3

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-04-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档