• Python进阶(十三)----面向对象


    Python进阶(十三)----面向对象

    一丶面向过程编程vs函数式编程vs面向对象编程

    面向过程:

    ​ 简而言之,step by step 一步一步完成功能,就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了.

    ###   来自百度百科
    	面向过程其实是最为实际的一种思考方式,就算是面向对象的方法也是含有面向过程的思想。可以说面向过程是一种基础的方法。它考虑的是实际地实现。一般的面向过程是从上往下步步求精,所以面向过程最重要的是模块化的思想方法。对比面向过程,面向对象的方法主要是把事物给对象化,对象包括属性与行为。当程序规模不是很大时,面向过程的方法还会体现出一种优势。因为程序的流程很清楚,按着模块与函数的方法可以很好的组织。比如拿学生早上起来这件事说明面向过程,粗略的可以将过程拟为:
        (1)起床
        (2)穿衣
        (3)洗脸刷牙
        (4)去学校
    	而这4步就是一步一步地完成,它的顺序很重要,你只需要一个一个地实现就行了。
    
    # C语言就是面向过程,虽然缺点很多,但是面向过程是编程的一种重要思想.C语言也算是其他更高级语言的'鼻祖'
    

    函数式编程:

    ###   来自百度百科
    	函数式编程是种编程方式,它将电脑运算视为函数的计算。函数编程语言最重要的基础是λ演算(lambda calculus),而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值)
    	
    # 简易理解: 函数式编程也是面向过程,函数式编程是极其简化的封装一个功能或一个动作, 由函数名+()去调用执行.减少代码的重复,对要完成的功能思路清晰.
    
    优点:
    	代码简洁,开发快速
    	接近自然语言,易于理解
    	更方便的代码管理
    	易于"并发编程"
    	代码的热升级
    
    缺点:
    	严重占用计算机资源
    
    # 常见的函数式语言: scale  python
    

    面向对象:

    ###  来自百度百科
    	面向对象程序设计(Object Oriented Programming)作为一种新方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。模型是用来反映现实世界中事物特征的。任何一个模型都不可能反映客观事物的一切具体特征,只能对事物特征和变化规律的一种抽象,且在它所涉及的范围内更普遍、更集中、更深刻地描述客体的特征。通过建立模型而达到的抽象是人们对客体认识的深化。
    	
    #简易理解:
    	1. 面向对象三大特性:封装(对相似功能的集合操作),继承(提高代码的重复利用),多态(复杂~~)
    	2. 万物皆'对象'
    	3. 类:一个共享相同结构和行为的对象的集合
    	
    #优缺点:
    	优点:易维护、易复用、易扩展,可使系统更加灵活、更加易于维护 
       缺点:性能比面向过程低,
    

    二丶面向对象的结构

    # class 关键字 , 类名(采用驼峰命名,首字母大写)
    class Student:	   	# 类是相似功能的集合体.
    
        daily = '学习'                         # 静态属性,属性
        examination = '考试'             #  静态属性,属性
    
    
        def work(self):                      # 方法 ,self是位置参数
            print('每天要上课')
    
        def homework(self):
            print('家庭作业')
    
    s1=Student()   		# s1就是对象,类的具体体现.
    

    三丶从类名的角度使用类

    class Student:
    
        '''
        备注信息
        '''
    
    
        daily='学习'   # 变量( 之前 )  静态属性,属性
        exam='考试'
    
        def work(self):  # 函数(之前) 方法,动态方法
            print('上课了')
        def homework(self):
            print('做作业了')
    
      
    
    ###  类名角度 :  调用 类中的属性
        # 1.查看类中所有的内容  , 类名.__dict__ 只用于获取类中的全部
    print(Student.__dict__)
        # 2. 查看类中单个内容,  类名.属性名
    print(Student.daily) 	  # 查看静态属性
    Student.cloth='校服' 		# 增加静态属性
    Student.exam='大手大脚三'  # 修改静态属性
    del Student.exam		 # 删除静态属性
    print(Student.__dict__)
    
    
    ###  类名调用类中的方法
    Student.homework('moja')      #这里必须传参数, 因为homework方法中有self位置参数存在
    
    
    # 一般类中的属性都是通过类名.的方式去操作
    

    四丶实例化一个对象

    # -*-coding:utf-8-*-
    # Author:Ds
    
    class Student:
        '''
        备注信息
        '''
    
        daily = '学习'  # 变量( 之前 )  静态属性,属性
        exam = '考试'
    
    
        def __init__(self,name,age,sex):        # 就是构造方法, 用于接收参数, 给对象设置对象空间的属性
            self.name=name
            self.age=age
            self.sex=sex
    
        def work(self,color):  # 函数(之前) 方法,动态方法
            self.color=color
            print(f'{self.name} 上课了')
    
        def homework(self):
            print('做作业了')
    
    
    stObj1=Student()   # 类名() 过程就叫实例化过程,实例化一个对象
    stObj2=Student()   # 类名() 过程就叫实例化过程,实例化一个对象
    print(stObj1)     # 对象,实例 <__main__.Student object at 0x000001E6DF2E9DD8>
    print(stObj2)     # 对象,实例 <__main__.Student object at 0x000001E6DF2E9DD8>
    
    
    #### 实例化一个对象时,发生了三件事情
        # 1. 在类名+()执行时,会在内存中创建一个以对象命名名称空间
        # 2. 自动执行__init__方法 ,并且将对象空间传给self
        # 3. 执行__init__方法的代码,给对象封装其属性
    
    ### 从对象角度研究类:
        # 对象操作对象里面的属性
        obj=Student()
        print(obj)			# 对象的内存地址, 对象会在内存创建一个以obj为名的内存空间
        #对象查看全部属性
        print(obj.__dict__)
    
    	#对象可以操作对象空间的属性
        obj.age='12' 		 # 增, 在以obj为名的内存空间中,添加一个age属性
        obj.name='bl' 		 # 增, 在以obj为名的内存空间中,添加一个name属性
        print(obj.__dict__)
        del obj.name  		 # 删除, 删除是obj名称空间内的name属性
        obj.age='2321'		 # 改  , 修改的是obj名称空间内的age属性
        print(obj.__dict__)	 # 查看 , obj名称空间的全部属性,以字典的形式
    
        
    ### 对象 查看类中的属性
        mc=Student()	   		
        print(mc.exam)		 # 对象,  查看/获取类中的静态属性,不能修改和删除
    
    
    ### 对象调用类中的方法
        mc=Student('小黑',33,'弟弟')
        mc.work('绿色')		# work方法 , 是对象具有某一功能的具体方法.   简称:对象方法  
        print(mc.__dict__)    
    
    
    

    对象生成时,经历的三件事情

    五丶什么是self?

    ​ self 就是类中方法的第一个位置参数 ,

    ​ 如果通过对象执行此方法,解释器就会自动的将此对象空间当做实参传给self

  • 相关阅读:
    团队冲刺六
    团队冲刺五
    【Mybaits学习】03_ CRUD基于注解
    【Mybaits学习】02_ 快速入门
    【Mybaits学习】01_ 初识
    深圳国际马拉松
    深圳南山半程马拉松
    Selenide使用笔记
    UI自动化测试01-环境搭建
    Java C3p0在Spring中运用
  • 原文地址:https://www.cnblogs.com/dengz/p/11139422.html
Copyright © 2020-2023  润新知