zoukankan      html  css  js  c++  java
  • 面向对象的初阶复习

    几个面试题:

    1.什么时候用面向对象?

    处理比较复杂的多个角色之间的关系。

    清晰度提高,可读性强:无论开发还是调用,都能明确分辨出每个角色拥有的方法和属性。

    增强了代码的可扩展性。

    通过继承,增加了复用性。

    更加规范。

    2.如何理解python中一切皆对象

    所有的基础数据类型都是对象,

    3.类型与类的关系

    类和类型是同一个东西

    4.创建一个类,创建一个对象

    对象:类名(),实例化

    双下new开一个空间,做初始化

    类:类都是被type创建的

        判断某个类的type,得到的结果还是typ。一个类型的类型就是类型。那么这个类的元类是type。

    用了指定的mateclass的,mateclass就是元类。

    元类都用来创建类的,一般都是type创建的

    1类

    class 类名()面试题,52分钟

    类是什么时候加载的?

    只要运行就执行,在私有属性位置的语句必然执行!但是类名.属性是不执行的,因为必须要所有类里的代码都加载完的时候才会有类名对应的类,才可以引用。

    类里有:

    静态属性/动态属性。这些的东西的地址都存在类中,对象中存着的是一个对类的引用,不是这个被引用对象的地址,是存着这个被引用对象地址的一个变量的地址。

    2对象

    在对象中,有类空间指针还有一些只属于对象的属性。

    3组合

    一个类的对象是另外一个类对象的属性

    表示的是xx有xx的关系,“人”有“武器”。

    4继承

    表示的xx是xx的关系,“人类”是“动物类”

    单继承和多继承

        单继承:子类的对象调某个方法,如果子类有就调子类的,没有就父类们的,没有报错。子类有还想调父类的,用supper(),不用再传self的就行。

    在任何类中调用的方法,都必须要分辨self是谁的方法。

         多继承:继承顺序。新式类(3里默认继承obj,广度优先遵循C3算法,mro()可查看继承顺序)/经典类(2里,不继承,深度优先,无mro())

    父类和子类:为什么要继承,减少代码重复,节省代码

    经典类和新式类

    5抽象类和接口类

    规范:子类中必须实现同名的方法,且都不能被实例化

    python里有原生实现抽象类的方法,没有接口类的。

    抽象类和接口类的区别:被单继承的是抽象类,被多继承的是接口类

    6多态和鸭子类型

    7.封装,私有

    8@property

    装饰器函数且内置函数,帮助把类中的类中方法伪装成属性。

    修改就调用@方法名.setter的代码

    删除就调用@方法名.deleter的方法,原来的property还在。

    8类方法和静态方法

    classmethod

    使用类名调用,默认传类名作为第一个参数

    不用对象空间的内容,而是只用类的内容(静态属性)/静态方法和类方法这三个都可以,别的都不行.

    Staticmethod

    一个类既不用类,也不要对象的内容,等同于一个函数,就将这个方法变为一个静态方法

    使用原因:1,完全想用面向对象编程,所有函数都必须写到类里

    2,某个功能确实是某个类的方法,但是也确实没有用到和这个类相关的资源

    比如登录是某一个对象的动作,应该放在这个类里,别的类的无法调用,一般是先写功能,发现确实不用的时候,回头加装饰器

    9,反射

    从某个指定的命名空间内,用字符串数据类型的变量名来获取变量的值

    类名反射静态属性和类方法 静态方法

    对象反射 对象属性 方法

    模块反射:模块中的方法

    自己模块中的:

    原因:变量名是字符串的版本:从文件里读的时候/交互拿:input,网络传输

    10.内置方法

    __名字__都不是被直接调用的

    可能会被简介调用

    __str__  str(obj),obj的类必须有__str__要求函数的返回值必须是str

    __repr__ 打印对象的时候,执行__repr__,像__str__...有后者就先后者,

    无的话关于__str__的调用都去变成__repr__

           对应的是repr(obj)和这两种%r用法

           是__str__的备胎,被使用__str__的返回值

    所以说,__retr__的功能强大,对应的调用方式多

    继承相关:子类中使用__str__,先找子类,再找父类的,没有就子类的__repr__,还无则父类的__repr__,一直没有就object的__str__

    __call__ 对象加括号  用类写装饰器必须用

    __new__在实例化的过程中,最先制定的方法,在__init__之前用来创造一个对象

    __Len__ len(obj),obj的类必须有__len__要求函数的返回值必须是int

  • 相关阅读:
    <<软技能,代码之外的生存技能>>读书笔记
    Pma模块详解,对用户登录linux等进行限制,密码修改限制等
    numpy pandas matplotlib
    numpy安装包scipy
    linux python 安装 nose lapack atlas numpy scipy
    kafka搭建
    实例化Bean的方法(基于xml配置)-http://blog.csdn.net/shymi1991/article/details/48153293
    转-Vue.js2.0从入门到放弃---入门实例(一)
    form表单传递对象数组
    使用ajax提交form表单,包括ajax文件上传 转http://www.cnblogs.com/zhuxiaojie/p/4783939.html
  • 原文地址:https://www.cnblogs.com/shachengcc1/p/11154002.html
Copyright © 2011-2022 走看看