zoukankan      html  css  js  c++  java
  • 面向对象

    1.面向对象和面向过程区别?

    面向过程是流程化思维,以过程驱动。面向对象是以点带面的思维,以一个个不同的点(对象),连接整个结果。因此如果代码需要修改,只需修改其中的一个点(对象/类),无需全部修改。

    2.类与对象的关系?

    类与对象的关系: 类是对事物的总结. 抽象的概念. 类⽤来描述对象. 对象是类的实例化的结果. 对象能执⾏哪些⽅法. 都由类来决定. 类中定义了什么. 对象就拥有什么

    3.面向对象3大特征及其特点?

    3大特征:继承,多态,封装

    多态:当获得结果时,不需考虑一个变量或者方法的结果的类型。

    4.类中一些名词的解释?

    class 类名:
    # ⽅法
      def __init__(self, 参数1, 参数2....):
      # 属性变量
        self.属性1 = 参数1
        self.属性2 = 参数2
      ....
      # ⽅法
      def method(self):
        pass

    5.属性变量与方法的区别和内存区别?

    属性变量分为实例变量(字段)和类变量(静态变量)。实例变量每一个均有唯一的内存地址,类变量共有一个内存地址,因此类变量的修改会被实例化保留。实例变量可覆盖类变量。

    方法:1. 成员⽅法(实例⽅法);2. 静态⽅法;3. 类⽅法 (不限制参数)

    6.类的属性?

    实现用方法描述属性(参数限制,只能有1个self)

    7.私有属性和方法?

    在变量前加__表示私有。私有内容不会被继承

    8.类与类的关系有哪些?

    1. 依赖关系

    类A可使用类B,但不限制只能使用使用类B。如多态特征
    2. 关联关系

    关联体现的是两个类之间语义级别的一种强依赖关系,比如我和我的朋友,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的。关联可以是单向、双向的。表现在代码层面,为被关联类B以类的属性形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量
    3. 组合关系

    一荣皆荣,一损皆损。如人的五脏,人没了,5脏也没了,表现在代码层面的如在类A中生成类B的实例对象
    4. 聚合关系

    整体挂了,但是个体仍可存活。如电脑挂了,CPU,硬盘换到别的电脑还能用。表现在代码层面如类B实例一个对象,然后在类A中使用。即使类A挂了,类B的对象依然能调用到其他类
    5. 继承关系
    6. 实现关系

    9.类名和对象是可hash,也就是说类名和对象可作为字典的key使用

    10.一些常见的私有方法

    1. 类名() 会⾃动执⾏__init__()
    2. 对象() 会⾃动执⾏__call__()
    3. 对象[key] 会⾃动执⾏__getitem__()
    4. 对象[key] = value 会⾃动执⾏__setitem__()
    5. del 对象[key] 会⾃动执⾏ __delitem__()
    6. 对象+对象 会⾃动执⾏ __add__()
    7. with 对象 as 变量 会⾃动执⾏__enter__ __exit__
    8. 打印对象的时候 会⾃动执⾏ __str__
    9. ⼲掉可哈希 __hash__ == None 对象就不可哈希了.

    11.创建一个对象的过程

    ⾸先, 在执⾏类名()的时候. 系统会⾃动先执⾏__new__()来开辟内存. 此时新开辟出来的内
    存区域是空的. 紧随其后, 系统⾃动调⽤__init__()来完成对象的初始化⼯作. 按照时间轴来算.
    1. 加载类
    2. 开辟内存(__new__)
    3. 初始化(__init__)
    4. 使⽤对象⼲xxxxxxxxx

    12. isinstance, type, issubclass 区别?
    issubclass(xx,yy) 判断xx是不是yy类型下的子类

    type(obj):查看obj是由那个类创建的

    13.什么叫反射?

    通过字符串来动态访问模块中的功能 .

    反射, 其实⼀共有4个函数:
    1. hasattr(obj, str) 判断obj中是否包含str成员
    2. getattr(obj,str) obj中获取str成员
    3. setattr(obj, str, value) obj中的str成员设置成value. 注意. 这⾥的value可以是
    , 也可以是函数或者⽅法
    4. delattr(obj, str) obj中的str成员删除掉
    注意, 以上操作都是在内存中进⾏的. 并不会影响你的源代码

  • 相关阅读:
    (转)一篇教会你写90%的shell脚本
    (转)printf命令详解
    (转)linux shell 字符串操作详解 (长度,读取,替换,截取,连接,对比,删除,位置 )
    (转)Shell中read的选项及用法
    (转)linux中shell变量$#,$@,$0,$1,$2的含义解释/Shell中的${}、##和%%使用范例/export
    (转)linux运维人员必会的22道shell编程面试题及视频讲解
    (转)李文周的博客
    ROS报错“An error occurred during the signature verification”的解决办法
    RRT and RRT Variants
    ROS LocalPlanner 基于自行车模型的DWA
  • 原文地址:https://www.cnblogs.com/jackfree/p/10007172.html
Copyright © 2011-2022 走看看