• 面线对象之类与对象


    一、面向对象:

    面向对象是一种编程思想,即编写代码的方式方法。

    OOP(Object Oriented Programing)将程序看做是一堆对象的集合,实现功能的方式就是对象之间交互来实现。

    二、类与对象:

    1.面向对象思想中最核心的概念就是:对象与类。

    定义:

    什么是对象:一切皆对象,对象指的是具备某些特征和技能的集合体,是实实在在的存在的具体物体(我的手机是对象,手机不是对象是一个类)。

    什么是类:(类别,分类)类是一个抽象概念,是根据一些列具备相同特征和技能的对象抽取得到的,比如说人类、鸟、花。通过类就能知道一个对象的特征。

    类与对象的关系:类包含了一些列相同特征和技能的对象,对象是属于类的实例。

    在程序中是:先有类,才能通过类来产生对象,要先确定对象具备什么特征和什么行为才能产生对象。

    2.面向对象的优缺点:

    优点:

    1.不用考虑繁琐的实现步骤,(从一个操作工,变成了老板);

    2.扩展性高,当需要一个新功能时,搞一个具备新功能的对象,命令它去完成任务;

    3.各个对象之间耦合度较低,当一个对象出现了问题,不会对其他对象产生问题;

    4.可维护性高。

    缺点:

    1.面向对象的复杂度比面向过程高。

    2.无法预知执行结果,如王者荣耀的游戏,一定不能把过程写死,每个英雄的行为是不固定的。

    使用场景:需要较高的扩展性(直接与用户发生交互的程序对扩展性要求较高,如微信)

      对于不需要扩展的程序而言,使用面向对象会增加复杂度。)

    为什么要用面向对象:在当前很多程序都需要与用户直接打交道,用户需求千变万化,所以对扩展性要求特别高。

    面向对象的本质:使用不同的对象来完成任务。

    三、定义一个类:关键字class+类名

    class  Penrson:

       name=‘盖伦’

    类名的定义规范:类名要按照驼峰体书写,如ThisIsPerson,即单词首字母大写。

    如何得到一个对象:先定义一个类,在调用这个类并赋值给一个对象,就得到了一个对象。

    访问对象的属性:用对象加点缀。

    属性查找:

    类有两种属性:数据性和函数属性。

    1. 类的数据属性是所有对象共享的。(所有对象共享的属性的id是相同的)
    2. 类的函数属性是绑定给对象用的。

    每一个对象都对应着一个内存地址,在创建对象时,计算机会申请一个新的内存空间,并将对象中的内容存进去。由于name的值是申明在类中的,所以person1.nameperson2.nameID是相同的。

    当所有对象的某个属性都相同时,放在类中。

    当每个对象的某个属性不相同时,放到对象中。

    可以通过 对象名.__dict__获取对象的所有属性,结果为字典型,但不包括类中的共享属性。

    通过 类名.__dict__获取类中包含的所有属性,包括类中定义的函数变量,函数等等信息。

    当对象中属性不存在时,会去类中访问,如果对象中存在这个属性,会优先访问对象中的属性。即查找顺序为:先对象,后类。

    当创建一个类、对象的时候 ,会产生一个名称空间,存储类、对象中名称与值得绑定关系。

    类还有一个作用:就是作为对象的模板,所有属于该类的对象,都具备类中的公共内容。

    即使类中,什么都不写,也存在一些自带的属性,是从父类中得到的。

    四、初始化函数:(@classmethod

    定义一个函数,目的用于设置对象的属性,如果没有对象,这个函数就没有意义,也就是初始化函数与类是一个整体。

    对象一创建就应该进行初始化,所以最好的是将创建与初始化进行绑定。

    初始化函数使用内置函数__init__self,其他属性参数),将该函数定义在类中,会在调用类时自动执行,(不需要调用__inint__,能自动执行。)self参数必须有,表示要进行初始化对象,系统会自动传值。

    五、绑定方法:是把对象与函数进行绑定。

    1.为什么要把方法与对象进行绑定:对象本质上是存放数据的容器,所以实质是把这个数据容器与函数进行绑定,函数的作用是实现功能即处理数据得到结果。

    只要拿到了对象,就等同于拿到了数据和方法。(对象可以查找类的属性,包括数据属性和函数属性)

    2.绑定方法分为两种:

    一种是绑定给对象(默认)

    一种是绑定给类

    所有定义在类中的函数的共同点是都含有一个参数,看绑定方式的不同,参数分别是类,和对象。

    当绑定给类时,默认将类本身当做参数传入,此时无论对象调用这个方法,还是类调用这个方法都不需要再将对象或类作为参数手动传参。

    当方法绑定给对象时,默认是将对象作为参数传入,此时对象在调用该方式时,不需要手动传参,但是类在调用时,需要手动传参。

     

    >>绑定给类:

    绑定给类时:对象和类都能直接调用这个方法,都不需要手动将对象作为参数添加到方法函数中,但是会默认自动添加(不是不添加,而是自动添加)。

    >>绑定给对象:默认情况下,类中函数(方法)都是绑定给

     

    绑定给对象时:

    1.当用对象来调用类中的方法时:默认会把对象传入方法中,不需要手动添加。

    2.当用类来调用时:则需要手动传入对象,即调用这个方法时,需将对象作为参数传入。

    一个方法到底应该绑定给对象还是绑定给类?

       当要处理的数据包含在类中时,就应该绑定给类。

       当要处理的数据包含在一个对象中时,就应该绑定给对象。

    类的绑定方法与对象的绑定方法:

    相同点:都会自动传值

    都可以被类和对象调用(只不过传参方式不同,一个需要手动传参)

    不同点:1对象绑定方法在调用时,传入的是对象自己,而类绑定方法,传入的是类自己。

            2第一个参数,一个cls一个叫self

    为什么要绑定:

    简化代码,提高效率。

    六、非绑定方法:@staticmethod(静态)

    在类中,既不绑定给类,也不绑定给对象,此时不在有默认参数

    特点:不会自动传参,类和对象都能调用

    当功能不需要访问类的数据,也不访问对象的数据,就可以作为一个非绑定方法。

     obj.name会先从obj自己的名称空间里找name,找不到则去类中找,类也找不到就找父类...最后都找不到就抛出异常  ,如果在自己的名称空间中找到,即使变量名和类中的变量名相同,也只取自己名称空间中的值>>>>>在自己名称空间中访问到就不会再去其他空间访问,而且自己名称空间的访问顺序排在首位。

  • 相关阅读:
    HTML中的文本标签
    Java 数组的创建
    JavaScript实现LUHN算法验证银行卡号有效性
    JavaScript实现HTML页面集成QQ空间分享功能
    JavaScript中的三种弹出框的区别与使用
    Maven 项目中的 pom.xml 文件内容说明
    FTPClient 中 FTPClient.changeWorkingDirectory(filePath) 代码一直返回 false
    Eclipse 中 Debug 时鼠标悬停无法查看变量值
    Innodb ,MyISAM
    tomcat jetty
  • 原文地址:https://www.cnblogs.com/yu-931017/p/10116208.html
Copyright © 2020-2023  润新知