• Python学习之路:面向对象补充


    1、什么是面向对象编程?

    ---以前使用函数

    ---类+对象

    2、什么是类什么是对象,又有什么关系?

    class 类:

      def 函数1():

        pass

      def 函数2():

        pass

    #obj 是对象,实例化的过程

    obj = 类()

    obj.函数1()

    ########## 面向对象不好 #########

    ########## 函数编程好 ###########

    有时候,函数编程能实现,比较麻烦;

    面向对象可以非常简短快速的实现;

    3、什么时候适用面向对象?

    ---如果多个函数需要传入多个共同参数时,可将多个参数封装到面向对象

    ---根据一个模板创建某些东西的时候

    ---应用场景

    #分别采用面向对象和函数的方法实现“连接服务器、上传文件和执行命令、关闭连接的功能”
    class SSH:
        def __init__(self,host,port,pwd,username):
            self.host = host
            ...
        def connection(self):
            # 创建连接
            self.conn = 和雾浮起创建的链接对象()
    
        def close(self):
            # 关闭
            self.conn.关闭
    
        def upload(self):
            self.conn.使用链接上传文件
    
        def cmd(self):
            self.conn.使用链接执行命令
    
    obj = SSH(...)
    obj.connection()
    obj.upload()
    obj.cmd()
    obj.close()
    
    #-----------------函数式编程-------------------
    def upload():
        # 连接服务器
        # 上传文件
        # 关闭服务器
    
    def cmd():
        # 连接服务器
        # 执行命令
        # 关闭服务器
    

     4、self就是调用当前方法的对象

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

    class Foo:
        #静态字段
        #公有属性
        country = "中国"
        def __init__(self,name,count):
            # 普通字段
            # 普通属性
            self.NAME = name
            self.count = count
           # self.country = "中国"
    
        def bar(self):
            pass
    
    obj1 = Foo("河南",100000)
    obj1.bar()
    obj2 = Foo("山东",120000)
    obj2.bar()
    

     5、封装

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

    ----对象中封装了:普通字段(普通属性)的值;

    #---------封装---------------
    class F1:
        def __init__(self,n):
            self.N = n
            print('F1')
    
    class F2:
        def __init__(self,arg1):
            self.a = arg1
            print('F2')
    
    class F3:
        def __init__(self,arg2):
            self.b = arg2
            print('F3')
    
    o1 = F1("Alex")
    o2 = F2(o1)
    o3 = F3(o2)
    ###输出Alex###
    #o3.b ==> o2
    #o2.a ==> o1
    o3.b.a.N
    

       继承

    ###-------继承######
    class F1:
        def __init__(self):
            print('F1')
    
        def a1(self):
            print('F1a1')
    
        def a2(self):
            print('F1a2')
    
    class F2(F1):
        def __init__(self):
            print('F2')
    
        def a2(self):
            self.a2()
            print('F2a2')
    
    class F3(F2):
        def __init__(self):
            print('F3')
    
        def a2(self):
            print('F3a2')
    
    obj = F3()
    obj.a2()
    obj.a1()
    

     多态(多种形态):

    6、字段:

        普通字段(保存在对象中)

        静态字段(保存在类中)

    方法:

        普通方法(保存在类中,调用者是对象)

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

    ###-------静态方法######
    class F1:
        @staticmethod
        def a1(a1,a2):
            print('Alex')
    F1.a1(1,2)
    

         

  • 相关阅读:
    两步验证杀手锏:Java 接入 Google 身份验证器实战
    涨姿势:Spring Boot 2.x 启动全过程源码分析
    Spring Cloud 升级最新 Finchley 版本,踩了所有的坑!
    Spring Boot 2.x 启动全过程源码分析(上)入口类剖析
    推荐:7 月份值得一看的 Java 技术干货!
    屌炸天,Oracle 发布了一个全栈虚拟机 GraalVM,支持 Python!
    Spring Boot 核心配置文件 bootstrap & application 详解。
    出场率比较高的一道多线程安全面试题
    凉凉了,Eureka 2.x 停止维护,Spring Cloud 何去何从?
    读写Excel
  • 原文地址:https://www.cnblogs.com/xiaobai005/p/8335602.html
Copyright © 2020-2023  润新知