• Python面向对象


    面向对象三大特性

    一、封装

    #1.将内容封装到某处
    #创建类
    class Foo:
        def __init__(self,name,age):   #称为构造方法,根据类创建对象时自动执行
            self.name=name
            self.age=age
    #根据类Foo创建对象
    #自动执行Foo类的__init__方法
    obj1=Foo("wupeiqi",18)  #将wupeiqi和18分别封装到obj1(即self)的name和age的属性中
    obj2=Foo('alex',73)
    #2.从某处调用封装的内容
    #2.1通过对象直接调用被封装的内容
    class Foo():
        def __init__(self,name,age):   #称为构造方法,根据类创建对象时自动执行
            self.name=name
            self.age=age
    obj1= Foo('wupeiqi',18)
    print(obj1.name)
    print(obj1.age)
    obj2=Foo('alex',73)
    print(obj2.name)
    print(obj2.age)
    #2.2通过self间接调用
    class Foo():
        def __init__(self,name,age):   #称为构造方法,根据类创建对象时自动执行
            self.name=name
            self.age=age
        def detail(self):
            print(self.name)
            print(self.age)
    obj1=Foo('wupeiqi',18)
    obj1.detail()   #python默认将obj1传给self参数,即obj1.detail(obj1),所以此时方法内部的self=obj1,即:self.name是wupeiqi;self.age是18
    obj2=Foo('alex',73)
    obj2.detail()

    二、继承

    #继承
    #   动物:吃、喝、拉、撒
    #
    #    猫:喵喵叫(猫继承动物的功能)
    #
    #    狗:汪汪叫(狗继承动物的功能)
    class Animal:
        def eat(self):
            print('%s吃'%self.name)
        def drink(self):
            print('%s喝'%self.name)
        def shit(self):
            print('%s拉'%self.name)
        def pee(self):
            print('%s撒'%self.name)
    class Cat(Animal):
        def __init__(self,name):
            self.name=name
            self.breed=''
        def cry(self):
            print('喵喵叫')
    class Dog(Animal):
        def __init__(self,name):
            self,name=name
            self.dreed=''
        def cry(self):
            print('汪汪叫')
    #############执行##############
    c1=Cat('小白家的小黑猫')
    c1.eat()
    c2=Cat('小黑家的小白猫')
    c2.drink()
    d1=Dog('胖子家的小痩狗')
    d1.eat()

    三、多态

    面向对象使用场景

    1.如果某个函数传入多个共同的参数时

    2.根据某个模板创建某些东西

    3.使用同一个对象连接时

    class SSH:
        def __init__(self,host,port,pwd,username):
            self.host=...
        def connection(self):
            #去创建连接
            self.conn=和服务器创建的连接对象
        def close(self):
            self.comm.关闭
        def upload(self):
            self.conn 使用连接上传文件
        def cmd(self):
            self.conn 使用连接执行命令
    obj=SSH(...)
    obj.connection()

    补充:

    1.self就是调用当前方法的对象

    静态字段适用场景:每个对象中保存相同的东西时,可以使用静态字段

    2.

    类?属性(实例变量、类变量、私有属性__var)、方法(构造方法、析构方法 (在销毁实例时可以写)、私有方法)

    对象?实例化一个类之后得到的对象

    封装?把一些功能的实现细节不对外暴露

      -----类中封装了:字段、方法

      -----对象中封装了:普通字段的值

    举例:

    继承?代码的重用、单继承、多继承(py2.7:经典类:深度优先,新式类:广度优先;py3.0:均是广度优先,推荐写新式类class Foo(object))

    多态?多种形态、接口的重用

    Python中默认支持多态

    3.字段:普通字段(保存在对象中)、静态字段(保存在类中)

    方法:普通方法(保存在类中、调用者是对象)、静态方法(保存在类中,调用者(无需创建对象),可以有任意个参数)

  • 相关阅读:
    iOS多图上传
    iOS强制横屏
    pod导入融云路径报错解决办法
    iOS 制作一个动态库
    iOS ProtocolBuffer使用介绍
    iOS 静态库与动态库的区别
    pod命令创建私有库详解【引用其他私有库、oc、Swift混编】
    M1 安装homebrew详解
    M1 执行pod install 报错
    iOS 消息转发机制
  • 原文地址:https://www.cnblogs.com/gqq-0504/p/7029252.html
Copyright © 2020-2023  润新知