前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python面向对象(一)

python面向对象(一)

作者头像
py3study
发布2020-01-20 15:06:45
4640
发布2020-01-20 15:06:45
举报
文章被收录于专栏:python3python3

面向对象

1.初始面向对象

    面向过程:

        一切以事务的发展流程为中心.

    面向对象:

        一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象

    打比方:

  面向过程

        大象进冰箱

    步骤: 第一步, 开门, 第二步, 装大象, 第三步, 关门

  面向对象:

  大象, 你进冰箱.

    此时主语是大象. 我操纵的是大象. 此时的大象就是对象

2. 类和对象

    类: 就是图纸. 创建对象的第一步. 先画图纸. 先写类.

    对象: 对象就是车. 通过图纸造出来的具体的东西. 通过类来创建对象

    类与对象的关系:

        类是对xxx事物的归类.

                def __init__(self, 参数)  参数一般作为属性设置给对象. 对象就是self, 对属性的封装.

       pass

                def 方法(self, 参数): 方法. 第一个参数一般是固定的self. 当前类的对象.

                    pass

        对象是xx类型的一个具体

            创建对象: 类名()

    创建类:

    class 类名:

        def __init__(self): # 初始化方法. 又被成为构造方法

            self.属性 = 值

        def fangfa(self):

            方法体(函数体,  return)

    创建对象:

        变量 = 类名() # 实例化 <-> 创建对象

        变量.属性 # 访问对象的属性信息

        变量.方法() # 访问类中的方法

代码语言:javascript
复制
class HeShang:
    def __init__(self, fh, name, miao):
        self.fahao = fh
        self.name = name
        self.miao = miao

    def nianjing(self):
        print("和尚会念经")

    def huayuan(self):
        print("和尚会化缘")

lzs = HeShang("花和尚", "鲁智深", "梁山水庙")
lzs.nianjing()
lzs.huayuan()

3. 面向对象和面向过程的对比

    如果写一些比较小的程序用面向过程.

    程序很复杂. 很庞大建议用面向对象.

4. 面向对象的三大特征

封装:

        1. 对属性的封装(__init__())

            self.xxx = xxx

        2. 对方法和功能的封装

代码语言:javascript
复制
class Student:
    def __init__(self, num, name, clazz):
        self.num = num
        self.name = name
        self.clazz = clazz


stu = Student("10010", "曹宝宝", "三年二班")
stu2 = Student("10086", "王迪", "三年一班")
def teach(s):
    print("教他%s语文课" % (s.name))
teach(stu)
teach(stu2)

继承

        子类自动拥有父类中除了私有内容外的其他所有内容

        class Bar(Foo):  Bar对Foo进行了扩展

            pass

        当出现x是一种y的时候. 推荐使用继承关系

        python支持多继承. 查找顺序: 先找离他近的.

代码语言:javascript
复制
class Base1:
    def f1(self):
        print("base1.1")
    def f2(self):
        print("base1.f2")
    def f3(self):
        print("base2.f3")
        self.f1()
class Base2:
    def f1(self):
        print("base2.f1")
class Foo(Base1,Base2):
    def f0(self):
        print("foo.f0")
        self.f3()
obj = Foo()
obj.f0()

多态  (python原生直接就是多态)

        python更多的支持的是鸭子模型,只要会叫就可以

代码语言:javascript
复制
class Animal:
    def chi(self):
        print("会吃")

class GoldenMonkey(Animal):
    def chi(self):
        print("用手拿着吃, 五花八门")

class Tiger(Animal):
    def chi(self):
        print("老虎吃肉")

class Elephant(Animal):
    def chi(self):
        print("大象吃香蕉")

def wei_animal(ani):
    ani.chi()


t = Tiger()
m = GoldenMonkey()
e = Elephant()

wei_animal(t)
wei_animal(m)
wei_animal(e)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-04-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

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